首页 > 解决方案 > 继承类的循环依赖问题

问题描述

//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 {
    ...
}

当我们尝试编译它时,我们遇到了链接依赖问题。我们如何编写包含头文件/前向声明来支持这一点?

标签: c++c++14

解决方案


通常,当您有循环依赖时,这意味着您需要重新考虑您的结构。在您的情况下,也许“一块真的需要了解董事会吗?”。

另一种解决方案是转发声明一个类。你可以这样写:

class a;

这只是告诉编译器“嘿,a 存在,它稍后会出现”。这可能会很快变得混乱,因此最好尝试重新考虑您的结构,以使您的类更加独立,并且不那么相互依赖。


推荐阅读