【问题标题】: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 是什么。