1. ホーム
  2. c++

[解決済み] エラー : 集合体 'first one' は不完全な型を持っており、定義することができません。

2022-01-25 12:04:40

質問

次のようなヘッダーファイルがあります。 (header1.h) :

#ifndef HEADER1_H
#define HEADER1_H

class first ;

//int summ(int a , int b) ;



#endif

そして、このソースファイル (header1.cpp and main.cpp) :

#include <iostream>
#include "header1.h"

using namespace std;


class first
{
    public:
  int a,b,c;
  int sum(int a , int b);

};

  int first::sum(int a , int b)
{

    return a+b;
}

#include <iostream>
#include "header1.h"


using namespace std;


   first one;

int main()
{
   int j=one.sum(2,4);
    cout <<  j<< endl;
    return 0;
}

しかし、このプログラムを codeblocks このようなエラーが発生します。

<ブロッククオート

集約 'first one' は不完全な型を持っており、定義することができません。

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

クラス宣言は.cppファイルには書けません。.hファイルに記述しないと、コンパイラーからは見えません。main.cppがコンパイルされるとき、型 "first" が class first; . これではコンパイラに何も伝わらないので、まったく役に立ちません(たとえば、firstがどんなサイズなのか、この型に対してどんな演算が有効なのか、など)。このチャンクを移動します。

class first
{
public:
    int a,b,c;
    int sum(int a , int b);
};

をheader1.cppからheader1.hに移動し、以下の項目を削除してください。 class first; header1.h 内