Xcode C++ Struct Order

Xcode C++ Struct Order

本文关键字:Order Struct C++ Xcode      更新时间:2023-10-16
下面

给出的代码由于结构的顺序不允许编译。song_node结构具有播放列表变量,播放列表结构具有song_node变量。

此代码在Visual Studio或gcc编译上运行。

struct song_node {
    song* data;
    song_node* next;
    song_node* prev;
    playlist* parent;
};
struct playlist {
    int songnumber;
    char* name = new char[LNAME_LENGTH];
    song_node* head;
    playlist* next;
    playlist* prev;
};

我是Xcode的新手。这段代码有什么问题?

考虑类playlist的前向声明

struct playlist; //Here
struct song_node {
    song* data;
    song_node* next;
    song_node* prev;
    playlist* parent;
};
struct playlist {
    int songnumber;
    char* name = new char[LNAME_LENGTH];
    song_node* head;
    playlist* next;
    playlist* prev;
};

然后编译器知道playlist,你可以在song_node中使用它,即使它还没有实现(尚未(。

你需要做一个前向声明。

struct playlist;
struct song_node {
    song* data;
    song_node* next;
    song_node* prev;
    playlist* parent;
};
struct playlist {
    int songnumber;
    char* name = new char[LNAME_LENGTH];
    song_node* head;
    playlist* next;
    playlist* prev;
};

编译器需要知道当您想在 song_node 中使用类似playlist的东西时。通过向前声明播放列表,您可以告诉编译器存在这样的对象。