繁体   English   中英

简单的C ++向量用法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM