[英]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.