我正在尝试使用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);
}
};