나는처럼 보이는 클래스의 구조를 가지고 : 모두 세 개의 순수 가상 함수를 가지고전화 포인터의 벡터에서 기본 클래스 다형성 기능
1
/\
2 3
||| ||
4 5 6 7 8
과 1 1 포인터를 보유하는 벡터를,
class Vector
{
public:
Vector();
void vectorAdd(Food* food)
{
mList.push_back(food);
}
//The two offending functions. The functions they point to are pure
//virtual in the Food class and overridden in the derived classes.
string getDescription(size_t index)
{
return mList[index]->getDescription();
}
double getPrice(size_t index)
{
return mList[index]->getPrice();
}
private:
vector<Food*> mList;
};
나는 광고 해요 : 8
벡터 클래스를 통해 제어되며,이 기분을 상하게하는 기능을 통해 4 2 3 다음 특정 사람에 기본 값을 반환 할 오버라이드 (override)
list.vectorAdd(&Spaghetti);
코드를 모두 컴파일,하지만 난 벡터 ::으로 getDescription (인덱스) 또는 벡터 :: getPrice (인덱스)를 호출 할 때마다 나는에 대해 어떠한 정보 디버그 오류를 얻을 :에 의해 INT 주에서 벡터에 땡 뭐가 잘못 됐어.
은''getPrice''에 대한으로 getDescription()', 그리고 저두 수 getDescription' 안 ? – cdhowie
나는 당신의 주장이 당신의 주장과는 반대로 * 컴파일되지 않는다는 것을 보장한다. –
컴파일하고, 그 괄호를 넣는 것을 잊었습니다. –