到目前为止,这是我的头文件代码的一部分:
class Class
{
public:
Class();
void addSmallerClassToVector(int i1, int i2);
vector<SmallerClass>* listofClasses;
};
void Class::addSmallerClassToVector(int i1, int i2)
{
SmallerClass* sC = new SmallerClass(i1, i2);
listofClasses.push_back(sC);
}
SmallerClass
只是一个包含两个 int 值的简单类。然而,此代码在行 listofClasses.push_back(sC);
上生成错误。
我也试过使用.insert()
,但是还是有同样的问题。我尝试使用 ->
而不是 .
等,但错误表明它与 listofClasses
没有类型或其他东西有关。
我想向 vector 中添加一个类,该类已经存在于 Class
类中。我该怎么做?
最佳答案
你需要设置你的 vector 来存储指针:
vector<SmallerClass*> listofClasses;
或者你可以改变你的方法来做:
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
您所做的是声明一个指向包含 SmallerClass 的 vector 的指针。
vector<SmallerClass>* listOfClasses;
因此,在您的声明中甚至在您使用它时都没有初始化。 然后,您还可以在构造函数中执行以下操作:
listOfClasses = new vector<SmallerClass>();
然后您必须对方法使用 ->
运算符。但也要注意其他提到的问题。
关于c++ - 简单的 C++ vector 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559186/