很難描述沒有代碼所以在這裏: 我想在另一個(a)的頭文件中創建一個對象(b)的原型,然後在a)調用(b)的構造函數並傳遞它的值,所以我可以使用b的方法,這取決於它的構造函數和傳遞給它的值,但是我做的方式給出了:紅色下劃線在定價的開放括號中構造函數說:「沒有默認構造函數存在monteCarlo」,然後在下一行m加下劃線紅色說:「沒有適當的操作符()或類型轉換函數指針功能類型的類的對象的調用」。任何其他批評我的節目是非常受歡迎的,我正在努力學習編程,而且很好。如何初始化一個成員使用它的參數化構造函數
在文件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)
{
}
終於蒙特卡洛.h是:
#pragma once
#include <vector>
class monteCarlo
{
public:
monteCarlo(int, double, double, int);
~monteCarlo(void);
std::vector< std::vector<double> > samplePaths;
};
歡迎計算器!請考慮一個描述問題的標題好一點。這樣,你可能會得到更多的關注和更好的答案。 – Sentry 2013-03-23 13:32:49
沒有理由包含自己的標題。我將從pricing.h中移除#include「pricing.h」。 – 2013-03-23 13:36:35
啊耶謝謝你,我認爲這一定是我一直在添加頭文件,我開始不使用它們。試圖在實際編程中更好地完成工作,而不僅僅是完成工作,所以這是一個學習過程:)感謝您重命名該問題,不確定什麼是好標題 – 2013-03-23 15:33:06