到目前为止,这是我的头文件代码的一部分:

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没有类型或其他内容有关。

我想向Class类中已经存在的向量添加一个类。我该怎么做呢?

最佳答案

您可以将向量设置为存储指针:

vector<SmallerClass*> listofClasses;


或者您可以更改方法来执行以下操作:

SmallerClass sC(i1, i2);
listofClasses.push_back(sC);


您所做的被声明为指向持有SmallerClass的向量的指针。

vector<SmallerClass>* listOfClasses;


因此,在使用它时,声明中甚至没有初始化。
您还可以在构造函数中执行以下操作:

listOfClasses = new vector<SmallerClass>();


然后,您必须对这些方法使用->运算符。但也请注意其他提到的问题。

08-28 05:42