C++ cpp 文件中继承的功能

C++ inherited function in cpp file

本文关键字:功能 继承 cpp 文件 C++      更新时间:2023-10-16

>Topic是一个基类,其方法称为possibleEvaluationQuestions()Topic中声明。 AlgebraTopicTopic的一个子类。在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 << "basen"; }   
};
struct Y : X
{
    void foo() { std::cout << "derivedn"; }
};
int main(){
    Y y;
    y.foo();
    y.X::foo();
}

输出:

派生

基础