5

私は C++ の基本にかなり精通していますが、経験が不足しています (主に Java のコード)。

私は、標準のビジュアル スタジオ クラス limits.h を使用する大規模なオープン ソース プロジェクトを拡張しています。ここには、次のコードがあります。

template<> class numeric_limits<double>
    : public _Num_float_base
    {   // limits for type double
public:
    typedef double _Ty;

    static _Ty (max)() _THROW0()
    {   // return maximum value
        return (DBL_MAX);
    }

このコードを含む minwindef.h を使用する別のオープン ソース プロジェクトをインポートしました。

#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif

この行のため、ビルドが壊れるようになりました

SUMOReal distance = std::numeric_limits<SUMOReal>::max();

コンパイラは、パラメーターなしで max() が使用されていると不平を言います。この問題を回避する簡単な方法はありますか? または、インポートしたライブラリを単に使用しないことはできますか? :/

これが十分に明確であることを願っています。提案に感謝します!!

4

3 に答える 3