我有A类和B类。A类有一堆具有get / sets的变量,但我只希望从B类调用这些集合。我能想到的唯一方法是使这些集合受到保护,并派生但是,B类最终将继承A类的一些不必要的东西。
例:
class A {
public:
void setHealth();
int getHealth();
private:
int health;
};
class B {
public:
void someMethod() { classAInstance.setHealth(); } //This should work
private:
A classAInstance;
};
A classAInstance;
classAInstance.setHealth(); //This should not work because its not being called from Class B
我希望我已向您解释了我的问题,足以让您了解我的需求。提前致谢!
最佳答案
您可以将setter声明为protected
或private
,然后声明B
为friend
的A
:
class A {
friend class B;
...
};
有关更多详细信息,请参见C++常见问题解答:http://www.parashift.com/c++-faq-lite/friends.html。