大家好,有人能帮帮我吗?
#include <iostream>
using namespace std;
class A
{
private:
int a;
protected:
int b;
void set_value(int y, int u, int i)
{
a = y;
b = u;
c = i;
}
public:
int c;
};
class B : private A
{
public:
A::set_value; //Compilation Error !
A::b; //Compilation Error !
};
int main()
{
B b;
b.set_value(1,1,1); //Compilation Error !
cout<<b.b; //Compilation Error !
}
如何使用子类
直接访问父类中的受保护成员(不使用get()或set())引用自cppreference(强调我的)
Using-declaration将基类的成员引入派生类定义,例如将基类的受保护成员暴露为派生类的公共成员。.
所以解决方案是这样写类:
class B : private A
{
public:
using A::set_value;
using A::b;
};
完整的例子在这里。
访问声明似乎在c++ 98中被弃用,最终在c++ 11中被删除。
首先,当我使用clang++时,它在编译时显示错误,当我使用g++编译器9.3.0版本时,它可以正常工作谢谢。