我有一个 A
类,如下所示:
class A {
// A's internal state
public:
void someMethod();
void anotherMethod();
};
我想在另一个类 B
中使用 A
。我不希望 B
成为 A
的子类型,但我希望 A
的公共(public)方法可以某种形式访问 B
的用户。
实现此目的的一种方法是简单地将 A
的实例作为 B
的公共(public)成员包含在内:
class B {
public:
A a;
// other members
};
另一种方法是让 A
成为 B
的私有(private)成员,并提供围绕 A
的公共(public)方法的包装器:
class B {
A a;
public:
void someMethod(){ a.someMethod(); }
void anotherMethod(){ a.anotherMethod(); }
}
我想知道是否有一种“首选”方式来执行此操作(或者甚至可能不涉及上述两种选择),或者它是否只是一个偏好问题。谢谢。
最佳答案
另一种方法是:
class B : private A
{
public:
using A::someMethod;
using A::anotherMethod;
};
关于c++ - 对象组合与提供显式包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125890/