Base
이 기본 클래스이며, 이는 또한 derived1
및 derived2
클래스를 파생했습니다. 나는 Base
포인터가 어떤 벡터 Base
, 및 derived2
개체 수있는 벡터 만들기 동적 바인딩을 사용하고 싶습니다. 그러나 push_back() 함수가 올바른 유형이 아님을 알려줍니다. main()
에서오류 : 'myVector'의 멤버 'push_back'요청. 클래스 유형이 'std :: vector <Base> *'이 아닌 클래스입니까?
코드 :
vector<Base> *myVector;
myFunction(myVector);
기능 :
void myFunction(vector<Base> *&myVector)
{
Base *b = new Base;
myVector.push_back(b);
delete [] b;
}
이 잘 유형의'Base'없는 유형의'자료 * '로 벡터를 정의! 이 행은'벡터 * myVector;'기본 포인터의 벡터가 아닌'Base' 벡터의 포인터를 정의합니다 –
EdChum
또한 포인터를 벡터에 추가 한 직후 포인터를 삭제하고 싶지 않습니다 ... (당신이 원한다면, 당신은'delete'가 아닌'delete'를 사용합니다.) – wakjah
[이것을 읽어주세요] (https://dl.dropboxusercontent.com/u/6101039/Modern%20C%2B%2B. pdf). – WhozCraig