这可能更多的是关于味道。
像这样的东西:
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/