父类
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返回类型不匹配。