0

ヘッダーにこの(の一部)コードがあります

class Node
{
     Node prevNode;

     public:
     Node(float nodeXRotation, float nodeYRotation, 
         float nodeZRotation, float boneLength, float xOffset, 
         Node prevnode);
}

しかし、次のエラーが表示されます: IntelliSense: 不完全な型は許可されていません (3 行目: Node 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 に答える