我们有一个基于组件的C ++设计,其中每个组件都包含一个公共外部类,用于对组件接口进行分组。每个接口都定义为嵌套类,如下所示。
struct ComponentContainer {
class InterfaceClass_1 : public ComponentInterface {
public:
virtual ~InterfaceClass_1 () = 0;
virtual InterfaceClass_1* GetInterface() = 0;
virtual void InterfaceMethod1 () = 0;
virtual void InterfaceMethod2 () = 0;
};
class InterfaceClass_2 : public ComponentInterface {
public:
virtual ~InterfaceClass_2 () = 0;
virtual InterfaceClass_2* GetInterface() = 0;
virtual void InterfaceMethod1 () = 0;
virtual void InterfaceMethod2 () = 0;
};
};
我的第一个问题是,使用类作为组件的容器是否正确/建议?用“namespace ComponentContainer”替换“struct ComponentContainer”更正确吗?
由于Interface类总是公开的,我一直在考虑将结构更改为:
namespace ComponentContainer {
struct InterfaceClass_1 : ComponentInterface {
virtual ~InterfaceClass_1 () = 0;
virtual InterfaceClass_1* GetInterface() = 0;
virtual void InterfaceMethod1 () = 0;
virtual void InterfaceMethod2 () = 0;
};
struct InterfaceClass_2 : ComponentInterface {
virtual ~InterfaceClass_2 () = 0;
virtual InterfaceClass_2* GetInterface() = 0;
virtual void InterfaceMethod1 () = 0;
virtual void InterfaceMethod2 () = 0;
};
};
这种定义组件的方法比我的第一个例子更好吗?我需要注意哪些根本缺陷?
感谢。
答案 0 :(得分:3)
struct和namespace方法之间的主要区别: