我是编程的初学者,我正在尝试寻找一种方法来创建鸽子类对象的动态存储。这是我的代码:
class pigeon {
public:
pigeon(std::string nameI);
void outputInfo();
private:
std::string name;
};
我的想法是我希望能够添加一个新对象,有一个存储其信息的位置,然后能够添加另一个对象,依此类推。我不知道从哪里开始,甚至不知道要使用什么数据结构,我也没有存储对象的经验。
答案 0 :(得分:0)
使用您的类的指针制作矢量:
std::vector<pigeon*> pigeons;
然后分配新的鸽子对象并将其推入载体:
pigeon * pig = new pigeon("pigeon");
pigeons.push_back(pig);
答案 1 :(得分:0)
正如评论中已经指出的那样,您最好使用一个容器来处理RAII/RDID-idiom之后的资源(“资源获取正在初始化” /“资源破坏正在删除”),因此您不必你得自己担心。这也是防止引发异常时资源泄漏的简单方法。
C ++标准库的常用容器之一是std::vector<>
。
您将以这种方式使用它(只是为了给您一个初步的想法,请参阅文档以获取进一步的说明和示例):
#include <vector>
// ...
{
std::vector<pigeon> pigeons;
pigeons.push_back("Karl"); // add three pigeons
pigeons.push_back("Franz"); // at the end of the
pigeons.push_back("Xaver"); // vector
pigeons[1]; // access "Franz"
for(auto /* maybe const */ &p : pigeons) { // iterate over the vector
// do something with pigeon p
}
} // pigeons goes out of scope, its destructor is called which
// takes care of deallocating the memory used by the vector.