我的标题中有这个(部分)代码
class Node
{
Node prevNode;
public:
Node(float nodeXRotation, float nodeYRotation,
float nodeZRotation, float boneLength, float xOffset,
Node prevnode);
}
但它给我以下错误:IntelliSense:不允许不完整的类型 (第3行:节点prevNode;)
这是我初始化'节点'的地方
Node nodes[] = { Node(0, 0, 0, 5, -14, NULL), //Duimkootje 2
Node(0, 0, 0, 5, -9, nodes[0]), //Duimkootje 1
Node(0, 0, 0, 10, 0, nodes[1]), //DUIMHANDBOT
Node(0, 25, 0, 10, 0), //WIJSVINGERHANDBOT
Node(0, 25, 0, 8, -9, nodes[3]), //Wijsvingerkootje 1
Node(0, 25, 0, 7, -17, nodes[4]), //Wijsvingerkootje 2
Node(0, 25, 0, 7, -24, nodes[5]), //Wijsvingerkootje 3
Node(0, 50, 0, 10, 0), //MIDDELVINGERHANDBOT
Node(0, 50, 0, 8, -9, nodes[7]), //Middelvingerkootje 1
Node(0, 50, 0, 8, -17, nodes[8]), //Middelvingerkootje 1
Node(0, 50, 0, 8, -24, nodes[9]), //Middelvingerkootje 1
Node(0, 75, 0, 10, 0), //RINGVINGERHANDBOT
Node(0, 75, 0, 7, -9, nodes[11]), //Ringvingerkootje 1
Node(0, 75, 0, 8, -16, nodes[12]), //Ringvingerkootje 1
Node(0, 75, 0, 8, -24, nodes[13]), //Ringvingerkootje 1
Node(0, 100, 0, 10, 0), //PINKHANDBOT
Node(0, 100, 0, 5, -9, nodes[15]), //Pinkkootje 1
Node(0, 100, 0, 5, -14, nodes[16]), //Pinkkootje 1
Node(0, 100, 0, 6, -19, nodes[17]), //Pinkkootje 1
我在这里做错了什么?
答案 0 :(得分:3)
Mooing Duck在评论中有答案。问题来自于您在尝试定义节点时尚未完全定义节点。这意味着编译器无法确定要分配多少内存。
解决办法是让prevNode
成为Node*
,因为那样你就宣布了一个已知大小的东西。
有趣的是,如果您是从Java开始使用C ++,那么可以在java中使用它。这是因为Java中的任何声明都总是一个对象引用。您不需要拥有大小信息,因为您正在做的事情总是“指向”某些东西,而不是为某些东西提供空间。这也是为什么在Java中,你总是想做Foo x = new Foo()
。