是否有可能在两个抽象类之间建立一个组合关系(而不是聚合)?
我不这么认为,因为我无法实例化一个抽象类。但也许有一种简单的方法可以做到这一点。
答案 0 :(得分:4)
是:
class A
{
virtual ~A() = 0;
};
class B
{
virtual ~B() = 0;
A* mA;
};
您可以拥有指向抽象类型的指针。
答案 1 :(得分:0)
您可以使用指向另一个类的指针或引用。例如:
class A {
public:
virtual void m() = 0;
virtual ~A() { }
};
class B {
public:
virtual void m() = 0;
virtual ~A() { }
private:
boost::scoped_ptr<A> a;
};
在C ++ 11中,您可以使用std::unique_ptr
代替。请注意,这会使B
不可复制 - 这对于使用子类型多态的类来说有点常见。