1

ネットからコピーしたヘッダーファイルに次のクラス定義があります

#ifndef A2DD_H
#define A2DD_H

class A2DD
{
    int gx;
    int gy;
public:
    A2DD();
    A2DD(int x,int y);
};
#endif

そして、実装ファイルには `

#include "A2DD.h" 

A2DD::A2DD()
{
}

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

問題は、パラメーターを持つコンストラクターが呼び出されると、次のエラーが発生することです。

情報:建物...

情報: C:\Users...\Desktop\main.cpp をコンパイルしています

情報 : C:\Users...\Desktop\main.exe をリンクしています

エラー: エラー: C:\USERS...\DESKTOP\MAIN.OBJ から参照された未解決の外部 'A2DD::A2DD(int,int)'

#include "A2DD.h"
int main()
  {
     A2DD add(2,3);
     return 0;
  }

ただし、A2DD add();パラメータなしで呼び出されると、プログラムは正常に動作します。

なぜ私がインターネットからコードをコピーしたのか疑問に思われるかもしれません。クラスを含む電気工学コースのプログラミングの割り当てがあり、Borland しか使用できず、コードはビジュアル C++ で動作しました...助けてください

4

1 に答える 1

4

コンストラクターを実装するファイルをコンパイルしてリンクする必要があります ( A2DD.cpp)。これがプロジェクトに属する実装ファイルであることを Borland に伝える必要があります。

あなたが誤解したのはこれです:

A2DD add();

デフォルトのコンストラクターは呼び出されず、 a を返し、パラメーターを持たない呼び出さた関数を宣言するだけです。したがって、この関数宣言は基本的にコード内で何も実行せず、既定のコンストラクターは呼び出されません。addA2DD

デフォルトのコンストラクターでオブジェクトを作成する場合は、

A2DD add;
于 2013-11-03T21:26:26.687 に答える