Вопрос о переменных C ++ - PullRequest
1 голос
/ 13 мая 2011

Я не могу понять, почему это работает:

#include <iostream>
using namespace std;

int main(){
     signed long int count = 1;

     //...

     count++;

     return 0;
}

И все же, если я переместил объявление идентификатора (ограничение) в начало скрипта (сразу после использования пространства имен), он не скомпилируетсяс ошибкой «count undeclared (first use in this function)» - выделение строки «count ++;».

В качестве альтернативы, Codepad приводит к следующей ошибке:

In function 'int main()':
Line 16: error: reference to 'count' is ambiguous
compilation terminated due to -Wfatal-errors.

Спасибо,

Будет.

Ответы [ 3 ]

9 голосов
/ 13 мая 2011

Возможно, у вас есть конфликт между вашей переменной count и std::count.Вы не должны использовать using namespace std, так как это помещает все из стандартной библиотеки в глобальное пространство имен, и имена скоро столкнутся.

Вместо этого используйте специальные строки, такие как using std::cin;.

2 голосов
/ 13 мая 2011

Попробуйте использовать :: limit, :: count или :: curNum

Это говорит о том, что они объявлены глобально.Хотя вам следует избегать объявления любых переменных глобально и вместо этого передавать их по ссылке.

0 голосов
/ 13 мая 2011

Это скомпилировано и работает нормально для меня:

#include <iostream>
using namespace std;

signed long int limit;
signed long int count = 1;
signed long int curNum = 3;

// Declaration of checkprime() function
bool checkprime(signed long int x)
{
    return true;
}

int main(){
     cin >> limit;

     do{
          if(checkprime(curNum) == true){
               count++;
          }
          curNum += 2;
     } while(count < limit);

     return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...