头文件和源文件错误



我正在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);

最新更新