1. ホーム
  2. c++

c++ プログラムが "field has incomplete type" 問題でコンパイルされる

2022-02-15 18:59:21

ネットで調べてみると、クラスや構造体の前方宣言は、ポインタオブジェクトやリファレンスの定義にしか使えないらしく、コンパイラがまだ定義を発見しておらず、クラスや構造体の内部メンバを知らないので、オブジェクトを具体的に構成する方法がなく、エラーになるとのことです。 

クラスのメンバをポインタに変更するのは問題ありません。このプログラムでは 不完全な型 事前宣言は、データ隠蔽に役立ちます。オブジェクトを呼び出すセグメントでは、宣言されたオブジェクトへの参照またはポインタのみを使用するように要求します。

を使用することはできません。 不完全な型 .

この問題が発生した理由は、ヘッダーファイルでstd名前空間を参照せずに文字列型を使っていたため、エラーが発生したため、文字列をstd::stringに変更するだけです。

ヘッダーファイルでusingを使用すると、名前の衝突の問題が発生することがあります。