C++ 使基类函数对客户端不可见
我想使基类中的所有函数对客户端不可见,只能通过派生类访问 在C++中有没有办法做到这一点?C++ 使基类函数对客户端不可见,c++,derived-class,C++,Derived Class,我想使基类中的所有函数对客户端不可见,只能通过派生类访问 在C++中有没有办法做到这一点? 谢谢 有两种方法,一种是 使用受保护的关键字 class A{ protected: void f(){ std::cout << "F" << std::endl;s } }; class B:public A{ // access f() here... }; 使用访问说明符(如果基类不在您的控制之下):
谢谢 有两种方法,一种是 使用受保护的关键字
class A{
protected:
void f(){
std::cout << "F" << std::endl;s
}
};
class B:public A{
// access f() here...
};
使用访问说明符(如果基类不在您的控制之下):
你熟悉受保护的关键字吗?使它们
受保护
。您所说的client
是指基类的对象吗?不清楚。你所说的“无形”和“客户”是什么意思?公共继承是一种契约。你不允许违背合同,快去吧。它会告诉你一切。需要一个B
的转发声明,才能将a
转发给friend
它。@user4581301我不这么认为,我已经测试过了。你能解释一下为什么需要吗?我很抱歉。跳枪。相同的命名空间异常。
#include <iostream>
class A{
private:
void f(){
std::cout << "F" << std::endl;
}
friend class B;
};
class B:public A{
A obj;
public:
void accessF(){
obj.f();
}
};
int main(){
B obj;
obj.accessF();
return 0;
}
class A
{ public:
void f() {}
void h() {}
};
class B: private A // all members of A are private
{ public:
void g()
{ f();
}
using A::h; // adjust access
};
int main()
{ A a;
a.f();
B b;
b.g();
b.h();
b.f(); // error: 'void A::f()' is inaccessible
}