是否可以指向一个类中另一个文件中定义的结构?

我在下面的代码中尝试过,但出现此错误:


  无法将赋值中的'main():: list *'转换为'entry :: list *'


main.cpp:

#include "entry.h"
#include <vector>

int main()
{

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

list A;
entry B;

B.ptrToStruct = &A;


return 0;
}


entry.h:

#ifndef ENTRY_H
#define ENTRY_H
#include <string>

class entry
{
public:

    struct list; //prototype does not work

    std::string text;
    struct list* ptrToStruct;

};

#endif // ENTRY_H


我也试图写这样的原型:

struct main::list;


这也不起作用,因为“未声明'main'”。

最佳答案

这是关于范围。当您在list中声明entry时,这是一个新类型entry::list

如果要使用全局类型list,则应将struct list;移到类之外的全局范围内。

您可能想对main中的声明执行相同的操作。

关于c++ - 指向另一个文件中定义的结构的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43206795/

10-13 08:27