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;
};
我有一只动物 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;
};