考虑以下内容:我有一个 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;
我得到的输出是“coelestium”,重复了四次:每次我将一个新元素 push_back 到向量中,所有已经存在的元素都取刚刚添加的元素的值。我还尝试使用迭代器以相同的结果恢复向量中的每个元素。有人可以告诉我这里有什么问题吗?
谢谢