c++ - 继承类的循环依赖问题
问题描述
//grid.h
class Grid {
...
std::vector<std::vector<Tile>> theBoard;
..
}
//tile.h
class Tile {
...
Piece *piece;
...
}
//piece.h
class Piece {
...
Grid *theBoard;
...
}
//queen.h
class Queen : public Piece {
...
}
当我们尝试编译它时,我们遇到了链接依赖问题。我们如何编写包含头文件/前向声明来支持这一点?
解决方案
通常,当您有循环依赖时,这意味着您需要重新考虑您的结构。在您的情况下,也许“一块真的需要了解董事会吗?”。
另一种解决方案是转发声明一个类。你可以这样写:
class a;
这只是告诉编译器“嘿,a 存在,它稍后会出现”。这可能会很快变得混乱,因此最好尝试重新考虑您的结构,以使您的类更加独立,并且不那么相互依赖。
推荐阅读
- python - 错误:无法在烧瓶中导入“file_name”
- json - 我将如何在 Dart 中为颤振项目访问此 JSON 数据?
- c++ - Asio 独立 async_connect 连接后不调用回调
- ios - 在 iOS 13.4 中,嵌套 ForEach 中的 SwiftUI ObservedObject 不再像 iOS 13.3 中那样更新 View
- sql - Select with Row_Number using join. Fetching last three customers with their respective addresses
- javascript - 试图测试一个不和谐的机器人;macOS 终端不断出现错误
- mysql - 并排的两个查询 - 共同的月/年(MYSQL)
- python - 根据这些条件增加和减少一个值
- excel - 如何将基于列 A 重复名称的整行复制到 VBA 中其各自的工作表中?
- go - Jenkins GO 运行失败,出现 git 128