C ++中最好的OO设计实现?

时间:2013-04-24 09:07:43

标签: c++ oop

这可能更多关于味道。

这样的事情:

class A:public vector<int>{};

class B:public vector<A>{
};

class C{
public:
vector<B> cs;
};

现在我想实现的是A中的一个函数,它接收C的对象。像这样:

class A:vector<int>{
void foo( C &c);
};

这是不可能的,因为C需要BB需要A才能完全申报。然后我看到两个选项:

1)使foo如此:void foo(void *c);并在实现(在A.cpp中)进行转换。这个问题不是很好或干净,对其他开发人员来说有点混乱。

2)在我正在处理的命名空间上创建一个对象。这违反了SOLID原则,特别是单一责任原则。

也许还有第三种方法,我没有看到它,并没有不方便。任何人都可以告诉我是否有更正确的剂量形式?

2 个答案:

答案 0 :(得分:2)

使用前瞻声明:

class C;

答案 1 :(得分:2)

我不确定我是否看到了您的问题。没问题:

class C;
class A
{
    void foo( C& c );
};

(但C存在问题。类C不能 包含std::vector<C>,因为std::vector需要。{1}} 实例化类型完成,C仅完成 在闭幕后。)