Ошибка: "count" is ambiguous
При объявлении count глобальной переменной выдает ошибку, но при локали все наоборот. Объясните, пожалуйста, почему так происходит?
Пару разу перезапускал VS,а ошибки как-будто и не было.
Ответы (1 шт):
Основная проблема - это использование using namespace std. Оно подтягивает все доступные (видимые) имена с std в основное пространство имен.
В хедере algorithm есть стандартная функция-алгоритм std::count. И если использовать using namespace std, то она стает доступна по имени count. И компилятор с линковщиком не знает, что делать и кого использовать.
У меня кроме ввода\вывода(
iostream) больше никаких библиотек не
я проверил на студийном компиляторе - да, даже при наличии iostream оно как то подтягивает. Как - одному Майкрософту известно.
Что можно сделать? Правильный способ - не использовать using namespace std. А в хедерах даже не думать использовать. Но что если рукам лень писать std::cout? - написать using std::cout; и будет как нужно.
Но если очень-очень хочется? В данном случае есть обходной путь - глобальную переменную писать вот так
std::cout << ::count << "\n";
двойное двоеточие подскажет компилятору использовать переменную с глобального пространства имен и ничего не будет плохого.
но что делать, если все ещё уверены в том, что using namespace std (я в этом ответе это написал больше, чем за последний год в своем коде:) ) - это хорошо? почитать мой разбор здесь Сервер и Thread не уживаются
