C++ 在实现抽象类时设置datamembers

C++ 在实现抽象类时设置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。你必

因此,我有一个抽象类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。你必须知道你在构造一个B,当你创建它的时候。用户通常认为他们只使用A。当我构造A时,我不会使用C。你不能构造A,它是一个抽象类。你说的“集合”是什么意思?如果您询问如何初始化它,请在
B
的构造函数中进行初始化。如果您只是在引用
a
的情况下询问如何访问它,那么您要么需要使用
dynamic\u cast
(不管您是否需要),要么扩展
a
的接口以依赖
C
,或者更改设计,以便在需要时引用
B
。@Steve抱歉,意思是B(有人在这里评论并删除了它?)?
//否#包括“C.h”类C;A类{void setC(C*)=0;}