c++在派生类中使用基类函数的错误
高洛峰
高洛峰 2017-04-17 14:57:58
0
4
396
#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;

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(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();
}

};

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal