c++在派生类中使用基类函数的错误

#include <iostream>

class ZZ
{
public:
    void print()
    {
        std::cout << "hello\n";
    }
};

class YY : public ZZ
{
public:
    void print()
    {
        using ZZ::print;
        print();
    }
};

int main()
{
    YY temp;
    temp.print();
    getchar();
    return 0;
}

为什么上面的这段代码回报错?
error: 'ZZ' is not a namespace or unscoped enum using ZZ::print;

阅读 4.2k
4 个回答

因为你那个用法是错的,这个用法是c++11新增的

class YY : public ZZ
{
public:
    using ZZ::print;
};

你写在成员函数里面,那么便成为了扩展一个成员函数的作用域,这当然不会成功。。

首先 main里的temp没初始化实例。。 然后你子类YY重载了父类的方法。别写USING,直接 ZZ::print();

在派生类中使用基类的public函数,要么你就直接不重写,要么你可以在派生类里的print函数中使用ZZ::print()调用。

using写错地方了!不应该写在成员函数内部!另外,两个print函数同名,会出现无限递归,应该给YY中的print重新起个名字!

class YY : public ZZ
{
public:

using ZZ::print;
void YYprint()
{
    print();
}

};

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题