很抱歉,如果我的问题非常简陋。
我有一个简单的类定义为:
#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'在这方面没有申明。
提前感谢您的帮助。
此致
答案 0 :(得分:2)
我认为你应该指定你正在使用的命名空间,如下所示:
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;
...
不要忘记命名空间,这很重要。
答案 1 :(得分:0)
问题解决了!用“algorithm”替换“minmax.h”并使用std :: max。 谢谢,