【发布时间】:2020-04-14 21:29:39
【问题描述】:
我有一个名为 DriverVect 的向量,它是 Drivers 类的成员。 DriverVect 是类 Driver 对象(不是 Drivers)的向量。我是一名初学者程序员,我正在尝试从我的主函数访问和修改 DriverVect 中的元素。
编辑:最小的可重现示例:
#include <vector>
using namespace std;
class Driver {
public:
void SetID(int DriverID);
int GetID() const;
private:
int ID;
};
class Drivers {
public:
vector < Driver > DriverVect;
};
int main() {
Drivers d;
cout << DriverVect.at(1) << endl;
}
【问题讨论】:
-
那么,你有
class Drivers { std::vector<Driver> DriverVect; };?向我们展示代码。 -
Start with this。修改该代码,以便您可以发布显示问题的minimal reproducible example。
-
@absoluteBeginner -- 获取我在链接中的代码,添加到它,从中删除代码,然后以这种方式重现错误。我编译的代码没有问题,因此请求您获取工作代码,并打破它,以便您可以在此处发布损坏的代码供我们诊断。要么这样,要么从该代码中了解您的错误是什么并自己解决问题。
-
@absoluteBeginner 并将生成的minimal reproducible example 通过editing 问题放入您的问题中。不要把它作为评论。阅读有关“minimal reproducible example”的链接。您当前的代码不是那样。
-
您的
DriverVect似乎是public。唯一的问题是您尝试在没有d的情况下访问它。尝试Driver& driver = d.DriverVect.at(1);(在您添加两个Drivers 之后),您将获得对第二个Driver的引用。要像您尝试的那样打印它,您必须为std::ostream& operator<<(std::ostream&, const Driver&);添加重载