重载函数min和模板

时间:2015-10-20 10:53:08

标签: c++

我的代码如下:

#include <vector>
#include <iterator>
#include <iostream>
#include <algorithm>  
#include <functional>  
#include <numeric>    
#include <cassert>


#include "image.h"
#include "..\Fct_numerique\fct_numerique.h"

template<typename Tim>
inline Tim min(const Image<Tim>& im){
    return( *std::min_element(im.begin(), im.end_element()) );
}

它给了我以下错误,我不明白:

  
      
  • 错误4错误C2589:&#39;(&#39;:&#39; ::&#39; c:\ pierre \ prog \ mylibim \ sources \ Fct_image \右侧的非法令牌fct_manipulation_image_T.h 1164 1 test_dilatation_rapide

  •   
  • 错误5错误C2988:无法识别的模板声明/定义c:\ pierre \ prog \ mylibim \ sources \ Fct_image \ fct_manipulation_image_T.h 1164 1 test_dilatation_rapide

  •   
  • 错误6错误C2059:语法错误:&#39; ::&#39; c:\ pierre \ prog \ mylibim \ sources \ Fct_image \ fct_manipulation_image_T.h 1164 1 test_dilatation_rapide

  •   
  • 错误7错误C2059:语法错误:&#39;)&#39; c:\ pierre \ prog \ mylibim \ sources \ Fct_image \ fct_manipulation_image_T.h 1164 1 test_dilatation_rapide

  •   

1 个答案:

答案 0 :(得分:3)

您没有提供准确答案的信息,我们不知道这些错误消息指向的位置以及它背后的代码。

但我将使用我的心灵力量和线索,这似乎是微软的编译器。因此,我认为正确的问题是“为什么min / max的函数宏是一个坏主意?”,答案是“因为它们会给你带来奇怪的错误信息”。

尝试在包含任何内容之前添加这些定义

#ifndef NOMINMAX
#define NOMINMAX
#endif

或者在项目设置中设置定义NOMINMAX