class A
{
public:
string name;
float length;
float weight;
bool isEnabled;
};
当我在push_back()
这个类的向量上做时,它第一次工作,但在随后的push_back()
调用中没有。可能是因为字符串成员吗?如果是这样,为什么?
我试过你的代码。
vector<Aclass> aClass;
aClass.push_back(Aclass("John Doe ", 6.2 , 220 , true) );
aClass.push_back(Aclass("John Doe2 ", 6.2 , 220 , true) );
aClass.push_back(Aclass("John Doe3 ", 6.2 , 220 , true) );
aClass.push_back(Aclass("John Doe4 ", 6.2 , 220 , true) );
但无法复制您的错误。
此代码推回四次。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Aclass
{
public:
string name;
double length;
double weight;
bool isEnabled;
Aclass(){}
~Aclass(){}
Aclass(string _name, double _length, double _weight, bool _isEnabled ) //constructor
{
name = _name;
length = _length;
weight = _weight;
isEnabled = _isEnabled;
cout<<" \n";
cout<<"Name : "<<name<<" \n";
cout<<"length : "<<length<<" \n";
cout<<"weight : "<<weight<<" \n";
cout<<" \n";
}
};
int main()
{
vector<Aclass> aClass;
aClass.push_back(Aclass("John Doe ", 6.2 , 220 , true) );
aClass.push_back(Aclass("John Doe2 ", 6.2 , 220 , true) );
aClass.push_back(Aclass("John Doe3 ", 6.2 , 220 , true) );
aClass.push_back(Aclass("John Doe4 ", 6.2 , 220 , true) );
cout<<" \n";
return 0;
}
输出 :
Name : John Doe
length : 6.2
weight : 220
Name : John Doe2
length : 6.2
weight : 220
Name : John Doe3
length : 6.2
weight : 220
Name : John Doe4
length : 6.2
weight : 220
Press any key to continue
为什么会string
与它有任何关系?
你做过#include <string>
吗?你还没有提到你是否class
有一个复制构造函数。它是这样的:
class A {
public:
A() //default constructor
A(const A&) //copy constructor
};
默认情况下,c++ 将复制所有公共成员,但您需要有一个复制构造函数才能使用 STL 容器和push_back()