我的标题中有这段(部分)代码
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
我在这里做错了什么?
最佳答案
Mooing Duck 在评论中给出了答案。问题来了,因为当你试图定义一个节点时,你还没有完全定义一个节点。这意味着编译器无法确定要分配多少内存。
解决方案是让 prevNode
成为 Node*
,因为这样你就可以声明一些已知大小的东西。
有趣的是,如果您是从 Java 转到 C++,您可以在 java 中避开这个问题。这是因为在 Java 中任何像这样的声明总是一个对象引用。您不需要大小信息,因为您所做的总是要“指向”某物,而不是为某物留出空间。这也是为什么在 Java 中,您总是想要执行 Foo x = new Foo()
。
关于c++ - 在 A 类中引用 A 类的其他实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455392/