我正在VS C++中进行一些与量化财务相关的编码,并且在.h和.cpp文件中遇到了错误。我注意到,当我在.cpp文件中执行所有操作时,这些问题都会消失,但我仍然想了解为什么在采用拆分方法时会出现错误。
当运行下面的";ConsoleApplication1.cpp";文件我得到了一些错误的形式:
严重性代码描述项目文件行禁止显示状态错误LNK2005";public:__thiscall GBM1D::GBM1D(双,双(";(?0GBM1D@@QAE@NN@Z( 已在ConsoleApplication1.obj ConsoleApplication1中定义。。。1
如有任何帮助,我们将不胜感激!!
感谢
"ConsoleApplication1.cpp";
#include <iostream>
#include "GBM1D.h"
#include "GBM1D.cpp"
int main()
{
double mu = 0.02;
double sigma = 0.3;
GBM1D(mu,sigma);
return 0;
};
"GBM1D.cpp";
#include "GBM1D.h"
GBM1D::GBM1D()
{
drift = 0.0;
vol = 0.0;
}
GBM1D::GBM1D(double drift_, double vol_)
{
drift = drift_;
vol = vol_;
};
double GBM1D::mu(double S)
{
return drift * S;
};
double GBM1D::sigma(double S)
{
return vol * S;
}
"GBM1D.h";
#pragma once
class GBM1D
{
public:
GBM1D();
GBM1D(double drift_, double vol_);
double mu(double S);
double sigma(double S);
private:
double drift;
double vol;
};
您不应该同时包含.h和.cppdo,您应该构建GBM1D
在控制台Application1.cpp上更改
#include "GBM1D.h"
#include "GBM1D.cpp"
至
#include "GBM1D.h"
并且在主中更改
double mu = 0.02;
double sigma = 0.3;
GBM1D(mu,sigma);
至
double mu = 0.02;
double sigma = 0.3;
GBM1D yourChoice(mu, sigma);