2017-01-30 3 views
-3

ここは私の機能です、maxはグローバルです。なぜ12行目の "max(max)への参照が" if(k> = max) "というエラーを出すのですか?

#include<iostream> 
using namespace std; 

int max = 0; 
int q = 0; 

int func(int a[], int n) 
{ 
    int k = 1; 
    for(int j = q + 1; j < n; j++) 
    { 
     if(a[j] <= a[j - 1]) 
     { 
      if(k >= max) 
      { 
       max = k; 
       q = j; 
      } 
      return 0; 
     } 
     k++;  
    } 

    if(k > max) 
    { 
     max = k; 
     return 1; 
    } 
} 

ここでは、kとmaxを比較するのが曖昧であるというエラーが表示されます。 maxはグローバルなのですか?

+0

これは、グローバル変数 'max'(別名' :: max')または 'std'(' std :: max')のものについて話しているのかどうかはわかりません。 – immibis

+0

@zev修飾名:: max: –

答えて

1

それはあなたがstd名前空間を使用しているためである。

using namespace std; 

をすでにお使いの変数maxと矛盾std::maxあります。

+0

を使用してください。ここでmaxはキーワードであり、変数名として使用できません。 – zev

+0

いいえC++言語のキーワードではありません。これは標準ライブラリで定義されているものです。したがって、ローカル変数 'max'と一緒に' namespace std'をインクルードするときだけ、あいまいさが生じます。 – 16tons