读书人

为什么在些模版方法的时候如果编写的

发布时间: 2012-02-28 13:06:35 作者: rapoo

为什么在些模版方法的时候,如果编写的方法名字在系统中存在了,则会出现编译错误
为什么在些模版方法的时候,如果编写的方法名字在系统中存在了,则会出现编译错误,代码如下:
#ifndef _MY_TEMPLATES_HPP_
#define _MY_TEMPLATES_HPP_

//#include "windows.h "

namespace ason {
namespace math{
template <typename T>
inline T const& max(const T& a,const T& b) {
return a> b?a:b;
}
template <typename T>
inline T const& max(const T& a,const T& b,const T& c) {
return max <T> (max <T> (a,b),c);
}
}
}

#endif
若注视行//#include "windows.h "打开,则出现编译错误。
因为系统已经定义过一个 max 宏了,在MSDN中的确可以找到,这个算是什么错误?



[解决办法]
因为“宏”优先
不要让自己写的任何东西和系统的宏重名。
发现重名了就改掉即可。

读书人网 >C++

热点推荐