父类
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();
}
为什么:
.. \ src \ TestSub.cpp:17:21:错误:没有在'TestSub'类中声明的'void TestSub :: print()'成员函数
答案 0 :(得分:1)
您有2个错误:
首先,您必须在TestSub
声明您的身份:void print();
其次,您必须为实现指定返回类型,C ++不接受默认返回类型,例如C
,因此您必须将实现转换为void TestSub::print() {...}
答案 1 :(得分:1)
print()函数未在Test Subclass中声明。
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;}
};
答案 2 :(得分:0)
如果未指定返回类型,则默认为int作为函数的返回类型。这与类中声明的void返回类型不匹配。