コードなしで説明するのは難しいので、ここに行きます:別の(a)のヘッダーファイルでオブジェクト(b)のプロトタイプを作成しようとしています。次に、(a)のコンストラクターで(b)のコンストラクターを呼び出して値を渡します、したがって、コンストラクターとそれに渡された値に依存する b のメソッドを使用できますが、私が行う方法は次のとおりです。次の行で、 m に赤い下線が引かれ、「適切な operator() またはポインターから関数への型への変換関数を使用しないクラス型のオブジェクトの呼び出し」と書かれています。私のプログラムの他の批評家は大歓迎です。私はプログラミングを学ぼうとしています。
ファイルpricing.cppには次のものがあります。
#include "pricing.h"
#include <math.h>
#include <vector>
pricing::pricing(void)
{
m(10,0.0,0.01,50);
}
double pricing::expectedValue(void)
{
expectedExValue = m.samplePaths[2][3]; //yes this isn't an expected value,
// its just for illustration purposes/making it compile.
return 0;
}
Pricing.hi には次のものがあります。
#pragma once
#include "pricing.h"
#include "monteCarlo.h"
class pricing
{
public:
pricing(void);
~pricing(void);
double euroCall();
std::vector<double> samplePathing;
double expectedValue();
monteCarlo m;
};
次に、montecarlo.cpp は次のようになります。
#include "monteCarlo.h"
#include "randomWalk.h"
#include <vector>
#include <iostream>
monteCarlo::monteCarlo(int trails, double drift, double volidatity, int density)
{
for (int i = 0; i < trails; i++)
{
std::cout << "Trail number " << i+1 << std::endl;
randomWalk r(drift,volidatity,density);
r.seed();
samplePaths.emplace_back(r.samplePath);
std::cout << std::endl << std::endl;
}
}
monteCarlo::~monteCarlo(void)
{
}
そして最後に montecarlo.h は次のとおりです。
#pragma once
#include <vector>
class monteCarlo
{
public:
monteCarlo(int, double, double, int);
~monteCarlo(void);
std::vector< std::vector<double> > samplePaths;
};