这可能更多的是关于品味。
像这样:
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
需要 B
而 B
需要 A
来完整声明。然后我看到 2 个选项:
1) 使 foo 如此:void foo(void *c);
并在实现上(在 A.cpp 中)进行转换。这个问题不是很好,也不是很干净,而且让其他开发人员有点困惑。
2) 在我正在处理的命名空间上创建一个对象。这违反了 SOLID 原则,尤其是单一责任原则。
也许还有第三种方式,我没有看到,但它不会带来不便。谁能告诉我是否有更正确的剂量形式?
最佳答案
使用前向声明:
class C;
关于c++ - C++ 中最好的 OO 设计实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16187931/