簡體   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