【问题标题】:declaring a struct in another struct在另一个结构中声明一个结构
【发布时间】:2012-12-20 20:45:45
【问题描述】:

在我的头文件中:

private:
struct movieNode {
    string title;

    castNode *castHead;

    movieNode *prev;
    movieNode *next;
};

struct castNode {
    string name;

    castNode *next;

};

movieNode *head;
movieNode *last;

但编译器错误是:

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

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

【问题讨论】:

    标签: c++ linked-list nodes


    【解决方案1】:

    movieNode 至少需要能够看到名为castNode 的不完整类型。此刻,编译器正在“嗯,castNode?那是什么鬼东西?”因为它还没有看到castNode 的定义。在这种情况下,您可以通过简单地定义castNode 定义movieNode 来避免它。只需交换两个结构即可。

    在其他情况下,如果您有循环依赖(例如,如果 castNode 也有指向 movieNode 的指针),您可以使用前向声明来提供不完整的类型(看起来像 @987654329 @),然后再适当地定义它。

    【讨论】:

    • 谢谢你,我想我是梦游者,无法识别。谢谢
    【解决方案2】:
    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;
    

    【讨论】:

      【解决方案3】:

      movienode 之前声明castNode

      只有movienode“知道”castNode 是什么。

      【讨论】:

        猜你喜欢
        • 2013-12-23
        • 1970-01-01
        • 2014-04-17
        • 1970-01-01
        • 2012-04-24
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        相关资源
        最近更新 更多