1

在我的头文件中:

private:
struct movieNode {
    string title;

    castNode *castHead;

    movieNode *prev;
    movieNode *next;
};

struct castNode {
    string name;

    castNode *next;

};

movieNode *head;
movieNode *last;

但编译器错误是:

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

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

4

3 回答 3

6

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

在其他情况下,如果你有一个循环依赖(例如,如果castNode有一个指向 a 的指针movieNode),你可以使用前向声明来提供一个不完整的类型(它看起来像class castNode;),然后稍后正确定义它。

于 2012-12-20T20:48:06.720 回答
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;
于 2012-12-20T20:52:17.967 回答
2

castNode前声明movienode

只有这样才movienode“知道”什么是 a castNode

于 2012-12-20T20:50:03.643 回答