私は積分計算機を書いています。functions.h.cpp ファイルにある関数クラスから関数を読み込むように main.cpp ファイルを取得しようとしています。簡単なケースとして、次のように定義された関数があります。
double square(double aX)
{
return aX*aX;
}
この関数は、メイン ファイルに含めると機能しますが、関数ファイルにあるときにメイン ファイルから呼び出そうとすると機能しません。これが私が持っているコードです:
Main.cpp
ファイル:
#include <iostream>
#include "IntegralCalculator.h"
#include "functions.h"
using namespace std;
int main()
{
IntegralCalculator Function(square);
Function.print();
}
ご覧のとおり、IntegralCalculator
実際に積分の計算を行う別のクラスが呼び出されていますが、関数定義がメインに含まれ、関数がパラメーターとして渡される場合に機能するため、何も問題はありません。ファイルは次のfunctions.h
ように定義されています。
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include <iostream>
#include <cmath>
#include "IntegralCalculator.h"
class functions : public IntegralCalculator
{
public:
functions();
double square(double aX);
};
#endif
functions.cpp
ファイルは次のように定義されています。
#include <iostream>
#include <cmath>
#include "functions.h"
double functions::square(double aX)
{
return aX*aX;
}
現時点ではライブラリが必要ないことはわかっていますが<cmath>
、より複雑な機能を追加するときにライブラリが必要になります。
メインで関数クラスを継承しようとしましたが、関数クラスの名前空間を作成して関数を定義しようとしましたが、どれも機能しませんでした。コンパイルすると、次のエラーが発生します。
Main.cpp: In function ‘int main()’:
Main.cpp:9: error: ‘square’ was not declared in this scope
誰かが私がこの問題を理解するのを手伝ってくれるなら. 私が書こうとしているこのコードは、私のクラスが超えたよりも高度なので、この方法でプログラムを書きたいのですが、それを修正する方法がわかりません。
編集: 興味がある場合は、 Makefileにfunctions.h
とファイルを含めます。クラスにも定義functions.cpp
を入れようとしたときに同じエラーが発生しました。square(double aX)
IntegralCalculator