次のことを考慮してください: 私は文字列メンバーを含むクラス CDevices を持っています。
class CDevice
{
public:
CDevice(void);
~CDevice(void);
// device name
std::string Device_Name;
etc...
}
コードの別の場所で、CDevices へのポインターのベクトルを含む別のクラスを定義します。
class CDevice;
class CServers
{
public:
CServers(void);
~CServers(void);
// Devices vector
vector<CDevice*> Devices;
etc...
}
問題は、私の main.c の次の行に表示されます
pDevice = new CDevice;
pDevice->Device_Name = "de";
Devices.push_back(pDevice);
pDevice->Device_Name = " revolotiunibus";
Devices.push_back(pDevice);
pDevice->Device_Name = " orbium";
Devices.push_back(pDevice);
pDevice->Device_Name = " coelestium";
Devices.push_back(pDevice);
for(int i = 0; i < (int)Devices.size(); ++i)
cout << "\nLoad name = " << Devices.at(i)->Device_Name << endl;
私が得る出力は、4 回繰り返される「 coelestium 」です。新しい要素をベクターに push_back するたびに、既存のすべての要素が、追加されたばかりの値を取ります。また、反復子を使用してベクター内の各要素を復元しようとしましたが、同じ結果が得られました。誰かがここで何が悪いのか教えてもらえますか?
ありがとう