在我的标题文件中:
private:
struct movieNode {
string title;
castNode *castHead;
movieNode *prev;
movieNode *next;
};
struct castNode {
string name;
castNode *next;
};
movieNode *head;
movieNode *last;
但编译错误是:
预期';'在'*'标记之前
我的目标是每个movieNode都应该有一个标题和一个演员表(使用castNode)。 提前谢谢。
答案 0 :(得分:6)
movieNode
至少需要能够看到名为castNode
的不完整类型。目前,编译器正在“哼,castNode
?到底是什么意思?”因为它还没有看到castNode
的定义。在这种情况下,您可以通过在定义castNode
之前定义movieNode
来避免它。只需交换两个结构。
在其他情况下,如果你有一个循环依赖(例如,如果castNode
也有一个指向movieNode
的指针),你可以使用前向声明来提供一个不完整的类型(它会看起来像class castNode;
),然后在以后正确定义。
答案 1 :(得分:4)
private:
struct castNode; // <- add this
struct movieNode
{
string title;
castNode* castHead;
movieNode* prev;
movieNode* next;
};
struct castNode
{
string name;
castNode* next;
};
movieNode* head;
movieNode* last;
答案 2 :(得分:2)
在castNode
之前声明movienode
。
只有movienode
“知道”castNode
是什么。