Подтвердить что ты не робот

Почему std:: cout вместо просто cout?

Я получаю эти сообщения об ошибках для всех cout и endl:

main.cc:17:5: error: ‘cout’ was not declared in this scope
main.cc:17:5: note: suggested alternative:
/usr/include/c++/4.6/iostream:62:18: note:   ‘std::cout’

После выполнения этого предложения все в порядке. Теперь мне любопытно, почему я должен был это сделать. Раньше мы использовали С++ в классах, но мне никогда не приходилось писать std:: перед любой из этих команд. Что может быть другим в этой системе?

4b9b3361

Ответ 1

Кажется, ваш класс, возможно, использовал pre-standard С++. Легкий способ сказать, это посмотреть на свои старые программы и проверить, видите ли вы:

#include <iostream.h>

или

#include <iostream>

Первый является стандартным, и вы можете просто сказать cout в отличие от std::cout без каких-либо дополнительных. Вы можете получить такое же поведение в стандартном С++, добавив

using std::cout;

или

using namespace std;

Только одна идея. Во всяком случае.

Ответ 2

В стандарте С++ cout определяется в пространстве имен std, поэтому вам нужно либо сказать std::cout, либо поместить

using namespace std;

в вашем коде, чтобы добраться до него.

Однако это не всегда так, и в прошлом cout находилось только в глобальном пространстве имен (или, позже, в глобальном и std). Поэтому я пришел к выводу, что ваши классы использовали более старый компилятор С++.

Ответ 3

Все в стандартной библиотеке шаблонов /Iostream находится в пространстве имен std. Вы, вероятно, использовали:

using namespace std;

В ваших классах и почему он сработал.

Ответ 5

Вероятно, у вас был using namespace std; в вашем коде, который вы делали в классе. Это явно указывает прекомпилеру искать символы в std, что означает, что вам не нужно std::. Хотя это хорошая практика для std::cout вместо cout, поэтому вы явно вызываете std::cout каждый раз. Таким образом, если вы используете другую библиотеку, переопределяющую cout, у вас все еще есть поведение std::cout, а не какое-либо другое поведение.

Ответ 6

"std" - это пространство имен, используемое для STL (стандартная библиотека шаблонов). См. http://en.wikipedia.org/wiki/Namespace_(computer_science)#C.2B.2B

Вы можете либо написать "use namespace std;" перед использованием каких-либо stl-функций, переменных или просто вставки "std::" перед ними.

Ответ 7

если они работают в ROOT, вам даже не нужно писать #include и использовать пространство имен std; просто начните с int filename(). просто попробуйте.