繁体   English   中英

在自己的.cpp中定义一个结构,然后在main中使用它

[英]Defining a struct in its own .cpp then using it in main

因此,我尝试在自己的.cpp文件中定义一个结构(用于组织或其他组织),然后将其在标头中声明,将标头包含在.cpp文件中,然后在main.cpp中包含标头,并尝试创建一个struct的向量,并且它不起作用。 但是,然后我采用了该结构的定义,并将其放入main.cpp中,它确实起作用了。 这只是我不知道的结构怪癖,需要在使用它们的文件中定义它们(出于某种原因)吗? 这是代码:

//people.h
struct People;

//people.cpp
#include people.h
struct People
{
std::string name;
int age;
};

//main.cpp
#include"people.h"
#include<vector>
std::vector<People> list;

编译main.cpp ,编译器只能看到#include d的内容文件。 这意味着它只能看到struct People; 这是一个前向声明,而不是完整的定义。 声明std::vector<People>需要知道People结构实际上有多大,因此编译器需要查看整个定义。

您需要将整个struct People { ... }; 定义为people.h (您可以将定义复制并粘贴到main.cpp ,但是具有结构的多个定义是一个非常糟糕的主意,因为很难使它们全部保持同步。)

如果在指针或对其引用的上下文中使用该结构,则结构的前向声明很有用。

您必须在* .H文件中定义结构和类,并在所需的* .CPP文件中包含标头。 * .CPP中定义的结构是文件本地的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM