我有一些代码可以将一些对象添加到 vector 中。然后我希望从 vector 中检索一个特定的对象,并且能够写出和编辑它的私有(private)成员变量。
这是我目前拥有的代码:
class Product {
public:
Product(int n, const string& na, int p)
: number(n), name(na), price(p) {};
void info() const;
private:
string name;
int number, price;
};
成员函数如下所示:
void Product::info() const {
cout << number << ". " << name << " " price << endl;
}
然后我创建一个 vector 并将一些对象放入其中,如下所示:
vector<Product> range;
range.push_back(Product(1, "Bagpipe", 25));
要检索并列出有关所有对象的信息,我有以下功能:
void listProducts (const vector<Product>& range1) {
for_each (range1.begin(), range1.end(), mem_fun_ref(&Product::info));
}
但这就是我卡住的地方。
归结为我的问题:我不知道如何从 vector 中检索单个对象并对其进行编辑。我需要能够在我的 vector 中搜索包含特定数字或名称的对象,并且能够检索有关其所有私有(private)成员的信息,还能够编辑所有成员。
到目前为止,我对解决方案的想法是:
创建额外的成员函数 可以返回单个成员
创建类似于我上面已有的函数的函数,可以搜索 vector 中的每个对象并使用这些附加成员函数的返回值与我要查找的内容进行比较
我不太清楚如何编辑一个对象的私有(private)成员,但我目前的猜测是我也需要成员函数,以及与这些成员相关的函数
任何帮助将不胜感激!甚至在正确的方向上含糊其词!
最佳答案
如果成员变量是私有(private)的,那么根据定义,你不能从外界访问它们!您需要执行以下操作之一:
- 将它们更改为
public
。 - 向类添加访问器函数(即
int MyClass::getFoo() const
和void MyClass::setFoo(int)
) . - 让你的函数成为类(class)的
friend
。
这与存储在 vector
中无关。
关于c++ - 检索和编辑 vector 中对象的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836000/