相关疑难解决方法(0)

C++ 模块和循环类引用

为了了解有关 C++20 模块的更多信息,我正在将图形应用程序从头文件迁移到模块。目前我遇到两个类之间的循环依赖问题。这两个类描述了图的节点和边。边类具有指向两个节点的指针,并且节点类具有指向相邻边的指针向量。我知道,还有其他方法来描述图形,但这种架构对我来说似乎非常自然,我可以非常快速地访问相邻元素,并且它在头文件和#include 的旧世界中无缝工作。关键是前向引用。

但在 C++20 模块的新世界中,前向引用不再起作用。

循环引用的话题已经在很多地方讨论过,但我还没有找到真正让我信服的解决方案。

一个常见的说法是循环引用是一个架构问题,应该避免。如有必要,应将这两个类打包到一个模块中。这显然是一种倒退。我尝试让模块变得小而简单。

我可以用指向实际已经存在的公共基类 NetworkObject 的指针替换指向节点或边的指针。但这会破坏有价值的信息,并迫使我使用 static_cast 人为地将类型信息添加回来。

我的问题是:我错过了什么吗?有更容易的方法吗?

c++ c++20

1
推荐指数
1
解决办法
675
查看次数

标签 统计

c++ ×1

c++20 ×1