2016-06-19 2 views
3

나는 Animal 클래스가 있습니다. DiffClass에는 Animal 클래스에 대한 포인터가 있습니다. 내가 올바르게 new 대신 std::vector을 사용하는 방법을 알아 내려고 노력 중이므로 메모리를 직접 삭제할 필요가 없습니다. 벡터가 Animal 클래스의 함수를 인식하지 못하는 이유를 모르겠습니다. 어떤 단서?C++ 새로운 표준 std :: 포인터 벡터

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; 
} 
+0

. 노골적인 컴파일 오류가 너무 명백합니다. 믿을만한 코드가 아닌 실제 코드를 게시하십시오. –

+1

@SamVarshavchik : 그는 컴파일러 오류를 묻습니다. –

답변

2

AnimalPointer 그래서 AnimalPointer[i]은 벡터가 아닌 Animal 및 작동하지 않습니다 거기에 display()를 호출하고, vector에 대한 포인터입니다. 비슷한 이유로 AnimalPointer.size()도 작동하지 않습니다. 당신은 vector에 포인터를 사용할 필요가 없습니다

, 단지

이 코드는 아마도 이제까지 컴파일 얻을 수있는 방법은 어떤 C++ 컴파일러에 의해, 없다
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; 
};