1

父类

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

子类 .h 定义

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();
}

为什么:

..\src\TestSub.cpp:17:21:错误:没有在类“TestSub”中声明的“void TestSub::print()”成员函数

4

3 回答 3

1

print() funciton is not declared in TestSub class.

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

I guess you also intended to make Test::print virtual?

class Test {
public:
    Test(){}
    virtual ~Test(){}
    virtual void print() {  std::cout << 1 << std::endl;} 
};
于 2012-12-27T06:27:38.123 回答
1

您有 2 个错误:

  • 首先,您必须将您的功能声明TestSub为:void print();

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

于 2012-12-27T06:16:23.440 回答
0

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

于 2012-12-27T06:13:58.023 回答