2017-10-23 5 views
-1

このようなif文があります。スカラー値とのC++ min関数の比較

typedef float Scalar; 

// ... 

if (someScalarValue > std::numeric_limits<Scalar>::min()) 
{ 
... 
} 

これはエラー生成:minが値を要求するので、おそらく

E0040 expected an identifier

を。

しかし、私はアプリケーションでこれがエラーを生成しない他の誰かのコードを持っています。なぜこの文が機能するのか?それを私のために働かせるには?

+0

でなければならない 'Scalar'は何ですか? 'std :: numeric_limits'のテンプレート特化が利用可能ですか? – Jodocus

+0

typedef floatスカラー; – Petras

+0

'SomeScalarValue'のタイプは何ですか? –

答えて

0

おそらく、これはMSVCでコンパイルしています。 windows.hmaxおよびminと定義されているため、これはstd::numeric_limitsを破ります。 を含める前に#define NOMINMAXを追加するか、グローバルに追加するか、numeric_limitsを使用する前に#undef minを追加してください。

また、Scalarは数値タイプ(のようなtypedef unsigned Scalar

+0

またはプリプロセッサを避けて、 '(std :: numeric_limits :: min)'のように 'min'を持つidのまわりのカッコを使用してください。 – StoryTeller

+0

答えをありがとう。私が(std :: numeric_limits :: min)浮動小数点値を浮動小数点値に変換する方法はありますか?浮動小数点浮動小数点型浮動小数点型変換は動作しません。 – Petras

+0

@Petrasスカラ? – ivaigult

関連する問題