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

浏览:59日期:2023-04-07

问题描述

#include <iostream>class ZZ{public: void print() {std::cout << 'hellon'; }};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;

问题解答

回答1:

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

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

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

回答2:

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

回答3:

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

回答4:

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

class YY : public ZZ{public:

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

};

相关文章: