使用未定义的“ Board”类型(静态循环依赖)

时间:2019-06-16 10:30:38

标签: c++ class struct static circular-dependency

我正在尝试使用c ++编写寻路程序。我有两个班级“董事会”和“节点”。 'Board'类包含节点的动态数组,'Node'类包含指向其所属的'Board'的静态指针。 tryig进行编译时,出现错误消息“ C2027使用未定义类型'Board'”。

我已经发现了循环依赖,并尝试以这种方式修复它。也许我做错了吗?我还解决了(至少希望有)包含一个类的静态变量将导致未解决的外部问题的问题。下面附上了代码的简化版本。

#pragma once
#include <vector>
#include <iostream>

struct Board;
struct Node;

struct Node {
    static Board* s_board;

    Node() {}

    void func() {
        std::cout << "I belong to board " << s_board << '\n'; //works
        std::cout << "I belong to a board with " << s_board->nodes.size() << "nodes \n"; //error: "use of undefined type 'Board'"
    }
};

Board* Node::s_board;

struct Board {
    std::vector<Node> nodes;

    Board() {
        Node::s_board = this;
        nodes.resize(10);
    }
};

0 个答案:

没有答案