没有在'TestSub'类中声明的'void TestSub :: print()'成员函数

时间:2012-12-27 06:12:07

标签: c++

父类

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()'成员函数

3 个答案:

答案 0 :(得分:1)

您有2个错误:

  • 首先,您必须在TestSub声明您的身份:void print();

  • 其次,您必须为实现指定返回类型,C ++不接受默认返回类型,例如C,因此您必须将实现转换为void TestSub::print() {...}

    < / LI>

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

相关问题