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

标签 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 来完整声明。然后我看到 2 个选项:

1) 使 foo 如此:void foo(void *c); 并在实现上(在 A.cpp 中)进行转换。这个问题不是很好,也不是很干净,而且让其他开发人员有点困惑。

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

也许还有第三种方式,我没有看到,但它不会带来不便。谁能告诉我是否有更正确的剂量形式?

最佳答案

使用前向声明:

class C;

关于c++ - C++ 中最好的 OO 设计实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16187931/

相关文章:

c++ - 提升测试无法找到自定义打印

c++ - QByteArray 转换和指针转换

c++ - hpp/cpp split with global function : Multiple definition of . .. 错误

Python:通过静态方法与类方法创建类实例

c# - C# 中的静态类列表

c# - API 扩展中的对象链接与方法

c++ - 系统调用 - sys/syscall.h - 不是这样的文件或目录 -

C++ 嵌套 If 语句的可读性

Java 防止出于不同目的的方法重复

javascript - 试图避免重复,简化...创建全局变量并简化我的 javascript -- 纯 js 没有 jquery