[英]Simple C++ vector usage
到目前为止,这是我的头文件代码的一部分:
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);
上生成错误listofClasses.push_back(sC);
。
我也尝试使用.insert()
,但是存在相同的问题。 我尝试使用->
代替.
等等,但是错误表明这与没有类型或某种东西的listofClasses
。
我想将一个类添加到Class
类中已经存在的向量中。 我该怎么做呢?
修复的简单方法是更改为:
vector<SmallerClass *> listofClasses;
^^^^^^^^^^^^^^
或者,您可以:
vector<SmallerClass> listofClasses;
...
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
您可以将向量设置为存储指针:
vector<SmallerClass*> listofClasses;
或者,您可以更改方法来执行以下操作:
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
您所做的被声明为指向持有SmallerClass的向量的指针。
vector<SmallerClass>* listOfClasses;
因此,在使用它时,声明中甚至没有初始化。 您还可以在构造函数中执行以下操作:
listOfClasses = new vector<SmallerClass>();
然后,您必须对方法使用->
运算符。 但也请注意其他提到的问题。
最可靠的解决方案是不将指针存储在向量中。 也没有理由在Class
存储指向向量的指针。
#include <vector>
class Class
{
public:
Class();
void addSmallerClassToVector(int i1, int i2);
std::vector<SmallerClass> listofClasses;
};
void Class::addSmallerClassToVector(int i1, int i2)
{
listofClasses.push_back(SmallerClass(i1, i2));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.