C++ 新增 std::vector 个指针

C++ New up std::vector of pointers

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

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] 是一个向量,而不是 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;
};