【发布时间】:2015-11-16 00:14:40
【问题描述】:
我正在尝试将 BFS 算法启动到矩阵中,以获得从我的位置到 BFS 找到的第一个可访问元素的最短路径。矩阵由如下定义的节点组成:
struct node {
int distance = -1;
node parent;
Pos position;
//Direction to get into the actual node from the parent's position.
Dir direction;
Cell cell;
};
一旦找到所需的项目,我需要有一个父节点的实例(先前访问过的并且与初始节点的距离小于实际节点的距离)以追踪返回原始节点的最快路径。但是似乎 node parent; 声明会抛出错误,所以可以用 struct 本身的类型声明 struct 的元素吗?还是我必须将其声明为指向元素的指针?
这里有错误:
error: field has incomplete type 'node'
node parent;
^
note: definition of 'node' is not complete until the closing '}
struct node {
^
谢谢。
【问题讨论】:
-
您需要使用指针。一个节点不能包含另一个节点对象,因为该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,该节点本身将包含另一个节点,依此类推。跨度>
-
如果你能做到这一点 - 让一个结构包含自身 - 想想你如何计算这样一个结构的大小以及这意味着什么......
-
选择一种语言。
标签: c++ c pointers struct forward-declaration