c++ - 检索和编辑 vector 中对象的私有(private)成员

标签 c++ object vector private member

我有一些代码可以将一些对象添加到 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() constvoid MyClass::setFoo(int)) .
  • 让你的函数成为类(class)的 friend

这与存储在 vector 中无关。

关于c++ - 检索和编辑 vector 中对象的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836000/

相关文章:

c++ - Windows运行时库依赖和纯C代码

java - 访问在另一个类中创建的对象

javascript - 访问对象中的嵌套键并将它们与其他对象键进行比较,但第二个是对象数组

Android 矢量图形图标集

c++ - 优化循环 C++

c++ - 自动生成唯一的类型 ID,反之亦然

android - 在android上编译需要STL的库

c++ - 从文件 C++ 中保存和读取双 vector

c++ - C++ 中的全局变量和局部变量

Java如何处理一个类型的对象