C++ 在实现抽象类时设置datamembers
因此,我有一个抽象类A,我在B中实现 B使用C,而A不能依赖C。那么我如何设置它呢 我不想使用动态强制转换并将setter添加到BC++ 在实现抽象类时设置datamembers,c++,C++,因此,我有一个抽象类A,我在B中实现 B使用C,而A不能依赖C。那么我如何设置它呢 我不想使用动态强制转换并将setter添加到B class A { public: virtual void doSomething() const = 0; } class C {} class B { public: virtual void doSomething() const { mVar; } private: C mVar; } 当你构造一个B时,你会设置C。你必
class A
{
public:
virtual void doSomething() const = 0;
}
class C
{}
class B
{
public:
virtual void doSomething() const { mVar; }
private:
C mVar;
}
当你构造一个B时,你会设置C。你必须知道你在构造一个B,当你创建它的时候。用户通常认为他们只使用A。当我构造A时,我不会使用C。你不能构造A,它是一个抽象类。你说的“集合”是什么意思?如果您询问如何初始化它,请在
B
的构造函数中进行初始化。如果您只是在引用a
的情况下询问如何访问它,那么您要么需要使用dynamic\u cast
(不管您是否需要),要么扩展a
的接口以依赖C
,或者更改设计,以便在需要时引用B
。@Steve抱歉,意思是B(有人在这里评论并删除了它?)?//否#包括“C.h”类C;A类{void setC(C*)=0;}