类 'TestSub' 中未声明'void TestSub::print()'成员函数



父类

class Test {
public:
    Test(){};
    virtual ~Test(){};
    void print() {  cout<<1<<endl;};
};

子类。h define

class TestSub: public Test {
public:
    TestSub();
    virtual ~TestSub();
 };

子类。cpp实现

#include "TestSub.h"
TestSub::TestSub() {
}
TestSub::~TestSub() {
}
void TestSub::print(){
    cout<<2<<endl;
}
int main(){
    TestSub *t=new TestSub();
    t->print();
}

原因:

. srcTestSub.cpp:17:21:错误:no 'void TestSub::print()'成员函数在类'TestSub'中声明

你有两个错误:

  • 首先你必须声明你在TestSub中的功能为:void print();

  • 第二,你必须为你的实现指定一个返回类型,c++不接受默认的返回类型,如C,所以你必须将你的实现转换为void TestSub::print() {...}

print()函数没有在TestSub类中声明。

class TestSub: public Test {
public:
    TestSub();
    void print();        // add declaration.
    virtual ~TestSub();
 };

我猜你也打算让Test::print虚拟?

class Test {
public:
    Test(){}
    virtual ~Test(){}
    virtual void print() {  std::cout << 1 << std::endl;} 
};

如果没有指定返回类型,C默认将int作为函数的返回类型。它与类中声明的void返回类型不匹配。

最新更新