[英]C++ inherited function in cpp file
Topic
是一個基類,具有在Topic
聲明的一種possibleEvaluationQuestions()
的方法( possibleEvaluationQuestions()
為Topic
possibleEvaluationQuestions()
。 AlgebraTopic
是Topic
的子類。 在AlgebraTopic
的cpp文件中,我聲明了該函數:
vector<EvaluationQuestion *> AlgebraTopic::possibleEvaluationQuestions()
{
return vector<EvaluationQuestion *>();
}
但是在Xcode中得到警告“行外定義...”。它說'possibleEvaluationQuestions()'不是在AlgebraTopic
聲明的,它不是,而是在超類Topic
聲明的。做錯了嗎?
當您定義時:
vector<EvaluationQuestion *> AlgebraTopic::possibleEvaluationQuestions()
編譯器正在尋找相應的聲明:在C ++中,如果沒有聲明成員函數,則無法定義它。
基類函數的聲明是另一個不同函數的聲明:任何AlgebraTopic
對象都存在。
您可以這樣說服自己:
struct X
{
virtual void foo() { std::cout << "base\n"; }
};
struct Y : X
{
void foo() { std::cout << "derived\n"; }
};
int main(){
Y y;
y.foo();
y.X::foo();
}
輸出:
派生
基礎
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.