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) );
しかし、エラーを再現できませんでした。
このコードは 4 回プッシュ バックします。
#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()