我如何指向另一个类中定义的结构?

时间:2017-03-17 10:42:24

标签: c++ forward-declaration

在我的应用程序中,我希望有一个包含条目的列表。其中一些列表条目具有包含更多条目的子列表。对于条目,我创建了一个类,该类具有文本字符串和指向子列表的指针。这些条目被放在一个列表中,其中包含指向条目的指针向量。现在我还想要一个包含数字的选择变量。所以我将该向量与变量放在一个struct中。

我试过这样:

entry.cpp

class entry
{
    struct list; //prototype

    std::string text;
    struct* ptrToSubList;
}

在main.cpp

struct list
{
    std::vector<entry*> entryVector;
    int selection;
}

正如您所看到的那样,问题首先要定义,因为两者在创建时都需要彼此了解。上面的例子不会编译并给出以下错误:

  

connot将entry :: list *转换为赋值中的main :: list *

那么,我怎样才能指向另一个类中定义的结构? 这是不好的风格吗?

1 个答案:

答案 0 :(得分:1)

您需要完全限定list结构,以告诉编译器它实际属于entry类,如下所示:

struct entry::list {
// ...
};