对不起,如果我的问题很基本。

我有一个简单的类定义为:

 #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 ,这很重要。

09-08 08:56