C++ 简单C++;媒介使用
这是迄今为止我的头文件代码的一部分:C++ 简单C++;媒介使用,c++,visual-c++,vector,C++,Visual C++,Vector,这是迄今为止我的头文件代码的一部分: class Class { public: Class(); void addSmallerClassToVector(int i1, int i2); vector<SmallerClass>* listofClasses; }; void Class::addSmallerClassToVector(int i1, int i2) { SmallerClass* sC =
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);
}
类
{
公众:
类();
void addSmallerClassToVector(intI1,intI2);
向量*类列表;
};
void类::addSmallerClassToVector(intI1,intI2)
{
SmallerClass*sC=新的SmallerClass(i1,i2);
类列表。推回(sC);
}
SmallerClass
只是一个包含两个int值的简单类。但是,此代码在类列表的行上生成一个错误代码>
我也尝试过使用.insert()
,但也出现了同样的问题。我尝试使用->
而不是
之类的,但是错误表明这与类列表
没有类型或其他东西有关
我想向向量中添加一个类,该向量已经存在于类中。如何做到这一点?简单的修复方法是更改为:
vector<SmallerClass *> listofClasses;
^^^^^^^^^^^^^^
类的向量列表;
^^^^^^^^^^^^^^
或者,您可以:
vector<SmallerClass> listofClasses;
...
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
类的向量列表;
...
小类sC(i1,i2);
类列表。推回(sC);
简单的修复方法是更改为:
vector<SmallerClass *> listofClasses;
^^^^^^^^^^^^^^
类的向量列表;
^^^^^^^^^^^^^^
或者,您可以:
vector<SmallerClass> listofClasses;
...
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
类的向量列表;
...
小类sC(i1,i2);
类列表。推回(sC);
简单的修复方法是更改为:
vector<SmallerClass *> listofClasses;
^^^^^^^^^^^^^^
类的向量列表;
^^^^^^^^^^^^^^
或者,您可以:
vector<SmallerClass> listofClasses;
...
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
类的向量列表;
...
小类sC(i1,i2);
类列表。推回(sC);
简单的修复方法是更改为:
vector<SmallerClass *> listofClasses;
^^^^^^^^^^^^^^
类的向量列表;
^^^^^^^^^^^^^^
或者,您可以:
vector<SmallerClass> listofClasses;
...
SmallerClass sC(i1, i2);
listofClasses.push_back(sC);
类的向量列表;
...
小类sC(i1,i2);
类列表。推回(sC);
您需要设置向量来存储指针:
vector<SmallerClass*> listofClasses;
您所做的是声明一个指向包含SmallerClass的向量的指针
vector<SmallerClass>* listOfClasses;
vector*类列表;
因此,在声明中,当您使用它时,它甚至没有初始化。
您还可以在构造函数中执行以下操作:
listOfClasses = new vector<SmallerClass>();
listOfClasses=newvector();
然后您必须使用->
运算符来处理这些方法。但是还要注意其他提到的问题。您需要设置向量来存储指针:
vector<SmallerClass*> listofClasses;
您所做的是声明一个指向包含SmallerClass的向量的指针
vector<SmallerClass>* listOfClasses;
vector*类列表;
因此,在声明中,当您使用它时,它甚至没有初始化。
您还可以在构造函数中执行以下操作:
listOfClasses = new vector<SmallerClass>();
listOfClasses=newvector();
然后您必须使用->
运算符来处理这些方法。但是还要注意其他提到的问题。您需要设置向量来存储指针:
vector<SmallerClass*> listofClasses;
您所做的是声明一个指向包含SmallerClass的向量的指针
vector<SmallerClass>* listOfClasses;
vector*类列表;
因此,在声明中,当您使用它时,它甚至没有初始化。
您还可以在构造函数中执行以下操作:
listOfClasses = new vector<SmallerClass>();
listOfClasses=newvector();
然后您必须使用->
运算符来处理这些方法。但是还要注意其他提到的问题。您需要设置向量来存储指针:
vector<SmallerClass*> listofClasses;
您所做的是声明一个指向包含SmallerClass的向量的指针
vector<SmallerClass>* listOfClasses;
vector*类列表;
因此,在声明中,当您使用它时,它甚至没有初始化。
您还可以在构造函数中执行以下操作:
listOfClasses = new vector<SmallerClass>();
listOfClasses=newvector();
然后您必须使用->
运算符来处理这些方法。但也要注意其他提到的问题。最可靠的解决方案是不在向量中存储指针。也没有理由在类中存储指向向量的指针
#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));
}
#包括
班级
{
公众:
类();
void addSmallerClassToVector(intI1,intI2);
类的向量列表;
};
void类::addSmallerClassToVector(intI1,intI2)
{
类列表。向后推(小类(i1,i2));
}
最可靠的解决方案是不在向量中存储指针。也没有理由在类中存储指向向量的指针
#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));
}
#包括
班级
{
公众:
类();
void addSmallerClassToVector(intI1,intI2);
类的向量列表;
};
void类::addSmallerClassToVector(intI1,intI2)
{
类列表。向后推(小类(i1,i2));
}
最可靠的解决方案是不在向量中存储指针。也没有理由在类中存储指向向量的指针
#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));
}
#包括
班级
{
公众:
类();
void addSmallerClassToVector(intI1,intI2);
类的向量列表;
};
void类::addSmallerClassToVector(intI1,intI2)
{
类列表。向后推(小类(i1,i2));
}
最可靠的解决方案是不在向量中存储指针。也没有理由在类中存储指向向量的指针
#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));
}
#包括
班级
{
公众:
类();
void addSmallerClassToVector(intI1,intI2);
类的向量列表;
};
void类::addSmallerClassToVector(intI1,intI2)
{
类列表。向后推(小类(i1,i2));
}
非常感谢!这是一个非常简单的修复:)@user2058340但存储指针可能不是一个好主意。你有充分的理由这么做吗?没错,但OP的代码中没有任何东西表明他们需要指针向量。他们存储指向向量的指针这一事实让我觉得他们不理解其中的含义……嗯。。。我必须存储在这个向量中的数据数量相当大。我可能需要SmallerClass来保存一个单独的向量类。还是不使用指针更好吗?@user2058340我倾向于认为指针在这里也是个坏主意。您必须明确地删除它们并删除它们