[英]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.