我有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声明为protectedprivate,然后声明BfriendA:

class A {
    friend class B;

    ...
};

有关更多详细信息,请参见C++常见问题解答:http://www.parashift.com/c++-faq-lite/friends.html

09-06 17:32