gpt4 book ai didi

C++ 新的 std::vector of pointers

转载 作者:太空狗 更新时间:2023-10-29 21:37:22 24 4
gpt4 key购买 nike

我有一个动物类。 DiffClass 具有指向 Animal 类的指针。我正在尝试找出如何正确使用 std::vector 而不是 new 因为这意味着我不必自己删除内存。我不明白为什么 vector 不能识别 Animal 类中的函数。有什么线索吗?

class Animal
{
void display(); //displays one animal
}

class DiffClass
{
public:
void someFunctionToSetUpVector()
{
AnimalPointer = new std::vector<Animal>;
for ( int i = 0; i <AnimalPointer.size(); i++)
{
AnimalPointer[i].display(); // does not work, can't find function
}
}
private:
std::vector<Animal>* AnimalPointer = 0;
}

最佳答案

AnimalPointer 是指向vector 的指针,所以 AnimalPointer[i] 是一个 vector ,而不是 Animal并在其上调用 display() 将不起作用。出于类似的原因,AnimalPointer.size() 也不起作用。

你不需要使用指向vector的指针,只是

class DiffClass
{
public:
void someFunctionToSetUpVector()
{
animals.push_back(Animal()); // add one Animal
// add more Animals...

for (int i = 0; i < animals.size(); i++)
{
animals[i].display();
}
}
private:
std::vector<Animal> animals;
};

关于C++ 新的 std::vector of pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com