指向另一个文件中定义的struct的指针

时间:2017-04-04 12:06:44

标签: c++ struct

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

我在下面的代码中尝试过但是得到了这个错误:

  

无法转换' 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;。

1 个答案:

答案 0 :(得分:2)

这是关于范围的。当您在list内声明entry新类型entry::list时。

如果您想要一个全局类型list,您应该将struct list;移到该类之外的全局范围。

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