是否可以指向在类中的另一个文件中定义的结构?
我在下面的代码中尝试过但是得到了这个错误:
无法转换' 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;
这不起作用,因为&#34;&#39; main&#39;尚未宣布&#34;。
答案 0 :(得分:2)
这是关于范围的。当您在list
内声明entry
新类型entry::list
时。
如果您想要一个全局类型list
,您应该将struct list;
移到该类之外的全局范围。
您可能希望对main
中的声明执行相同的操作。