netbeans:' max'在这方面没有申明

时间:2015-06-05 09:13:21

标签: c++ netbeans

很抱歉,如果我的问题非常简陋。

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

 #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'在这方面没有申明。

提前感谢您的帮助。

此致

2 个答案:

答案 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。 谢谢,