繁体   English   中英

C ++新的std ::指针向量

[英]C++ New up std::vector of pointers

我有一个动物课。 DiffClass具有指向Animal类的指针。 我试图找出如何正确使用std::vector而不是new因为这意味着我不必自己删除内存。 我不明白为什么向量不能识别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]是一个向量,而不是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;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM