对不起,如果我的问题很基本。
我有一个简单的类定义为:
#ifndef PAYOFF1_H
#define PAYOFF1_H
class PayOff
{
public:
enum OptionType {call,put};
PayOff(double Strike_,OptionType TheOptionType_);
double operator()(double Spot) const;
private:
double Strike;
OptionType TheOptionType;
};
源文件是:
#include "PayOff1.h"
#include "minmax.h"
PayOff::PayOff(double Strike_, OptionType TheOptionType_)
:
Strike(Strike_),TheOptionType(TheOptionType_)
{
}
double PayOff::operator ()(double spot) const
{
switch(TheOptionType)
{
case call:
return max((spot - Strike) , 0);
case put:
return max((Strike-spot) , 0);
default:
throw("unknown option found.");
}
}
我收到错误“max”未在此范围内声明。
提前谢谢你的帮助。
问候,
最佳答案
我认为您应该指定正在使用的 namespace ,如下所示:
std::max
要么
using namespace std;
因此,在第一种情况下,部分代码应如下所示:
...
case call:
return std::max((spot - Strike) , 0);
case put:
return std::max((Strike-spot) , 0);
...
在第二种情况下:
#include "PayOff1.h"
#include "minmax.h"
using namespace std;
...
不要忘记 namespace ,这很重要。