1. ホーム
  2. c++

[解決済み] Codeblocks c++ 未定義参照エラー、クラスは定義されている

2022-02-24 02:27:05

質問

先日、あるC++のコードがうまく動かないので質問させていただきました。c++でオブジェクトを作成する方法について皆のアドバイスを受けたのですが、未定義の参照エラーが発生します。私は最新のコードブロックのバージョンを使っており、それを使ってコンパイルしています。これは、コンパイル時にいくつかのファイルをリンクしていないことが原因であり、ヘッダーファイルでクラスを定義したが、コードでは定義していないことを意味すると読みましたが、私の理解では(教授の例)、私はオブジェクトを宣言しているので、混乱しています。

ヘッダーファイル MathObject.h

class MathObject{
private:
    int num1;
    int num2;

public:
    int sum();
    MathObject(int n, int m);
};

MathObjectファイル MathObject.cpp

#include <iostream>
#include "MathObject.h"
using namespace std;

MathObject :: MathObject(int n, int m){
    num1 = n;
    num2 = m;
}

int MathObject :: sum(){
    return num1+num2;
}

メインファイル

#include <iostream>
#include "MathObject.h"
using namespace std;

int main(int args, char *argv[]){
    MathObject *mo = new MathObject(3,4);
    int sum = mo -> sum();

    MathObject mo2(3,4);

    //cout << sum << endl;
    return 0;
}

未定義の参照は、MathObjectクラス内のすべての呼び出しに対してです。私は、私が理解できる小さなc++の例を探していました。(構文がjavaとあまりに違うので)。

以前はcで複数のファイルを使おうとするとこの現象が起きていたのですが、これは私のパソコンの問題でしょうか?

解決方法を教えてください。

codeblocksの「Projects"」タブで、プロジェクト名を右クリックし、「Add Files..."」を選択します。

または、アプリケーションのメインメニューの "Project" から "Add files..." を選択することも可能です。

プロジェクトにすべてのソースファイルを追加する場合に使用します。

現在 MathObject.cpp はそのリストから漏れているので、コンパイルもリンクもされていません。