0

我的标题中有这个(部分)代码

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

我在这里做错了什么?

4

1 回答 1

3

Mooing Duck 在评论中有答案。问题出现是因为您在尝试定义节点时尚未完全定义节点。这意味着编译器无法确定要分配多少内存。

解决方案是 make prevNodea Node*,因为这样你就声明了一个已知大小的东西。

有趣的是,如果您是从 Java 开始使用 C++,那么您可以在 Java 中解决这个问题。这是因为在 Java 中任何类似的声明始终是对象引用。您不需要有大小信息,因为您所做的总是要“指向”某物,而不是为某物留出空间。这也是为什么,在 Java 中,你总是想要做Foo x = new Foo().

于 2012-05-04T20:07:07.400 回答