1. ホーム
  2. c++

[解決済み] C++、ヘッダーファイルで構造体を宣言する方法

2022-02-17 14:07:43

質問事項

student"という名前の構造体を student.h ファイルを作成しましたが、その方法がよくわかりません。

私の student.h ファイルのコードは完全に構成されています。

#include<string>
using namespace std;

struct Student;

を使用する一方で student.cpp ファイルは完全に構成されています。

#include<string>
using namespace std;

struct Student {
    string lastName, firstName;
    //long list of other strings... just strings though
};

残念ながら #include "student.h" のようなエラーが多数発生します。

error C2027: use of undefined type 'Student'

error C2079: 'newStudent' uses undefined struct 'Student'  (where newStudent is a function with a `Student` parameter)

error C2228: left of '.lastName' must have class/struct/union 

コンパイラ(VC++)が "student.h" のstruct Studentを認識しないようです?

Student 構造体を "student.h" で宣言して、#include "student.h" するだけで構造体を使用できるようにするには、どうしたらよいですか。

どのように解決するのですか?

を配置してはいけません。 using ディレクティブは、ヘッダーファイルの中で 不要な頭痛の種 .

も必要です。 インクルードガード をヘッダーに追加してください。

EDIT: もちろん、include guardの問題を解決した後は、ヘッダーファイルでstudentの完全な宣言も必要です。他の方が指摘されているように、あなたの場合、前方宣言では十分ではありません。