9

私はこのヘッダーファイルを書きました(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、次のエラーが表示されます。

集計「最初の 1 つ」の型が不完全であり、定義できません。

4

3 に答える 3

14

クラス宣言を .cpp ファイルに入れることはできません。.h ファイルに配置する必要があります。そうしないと、コンパイラには表示されません。main.cpp がコンパイルされると、タイプ「最初」はclass first;. これはコンパイラに何も伝えないため、まったく役に立ちません (最初のサイズや、この型で有効な操作など)。このチャンクを移動:

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

header1.cpp から header1.h へ、header1.h でclass first;取り除く

于 2013-07-23T01:07:16.097 に答える
1

メイン関数も使用している場合は、最初にクラスを定義し、後でメインを定義します。別のヘッダー ファイルを明示的に作成する必要はありません。

于 2015-06-13T02:37:31.227 に答える
0

クラス全体をヘッダーファイルで宣言する必要があります (クラスが実際に使用されるすべての場所に含まれます)。そうしないと、コンパイラーはクラス内で「検索」sumする方法 (またはクラス用に予約する必要があるスペース) を認識できません。

于 2013-07-23T01:08:01.780 に答える