在另一个struct中声明一个struct

时间:2012-12-20 20:45:45

标签: c++ linked-list nodes

在我的标题文件中:

private:
struct movieNode {
    string title;

    castNode *castHead;

    movieNode *prev;
    movieNode *next;
};

struct castNode {
    string name;

    castNode *next;

};

movieNode *head;
movieNode *last;

但编译错误是:

  

预期';'在'*'标记之前

我的目标是每个movieNode都应该有一个标题和一个演员表(使用castNode)。 提前谢谢。

3 个答案:

答案 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是什么。