it-swarm-pt.tech

Por que std :: cout em vez de simplesmente cout?

Eu recebo essas mensagens de erro para todos os cout e 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’

Depois de seguir a sugestão, está tudo bem. Agora estou curioso, porque eu tive que fazer isso. Nós usamos C++ em classes antes, mas eu nunca tive que escrever um std:: antes de qualquer um desses comandos. O que pode ser diferente neste sistema?

59
erikbwork

Parece possível que sua classe possa estar usando o C++ pré-padrão. Uma maneira fácil de saber, é olhar seus programas antigos e verificar, você vê:

#include <iostream.h>

ou

#include <iostream>

O primeiro é pré-padrão e você poderá dizer apenas cout em vez de std::cout sem nada adicional. Você pode obter o mesmo comportamento no C++ padrão, adicionando

using std::cout;

ou

using namespace std;

Apenas uma ideia, de qualquer maneira.

119
FatalError

No padrão C++, cout é definido no namespace std, então você precisa dizer std::cout ou colocar

using namespace std;

no seu código, a fim de chegar a ele.

No entanto, isso nem sempre foi o caso e, no passado, cout estava apenas no namespace global (ou, mais tarde, em global e std). Concluo, portanto, que suas classes usaram um compilador C++ mais antigo.

24
Matthew Walton

Tudo no Standard Template/Iostream Library reside no namespace std. Você provavelmente já usou:

using namespace std;

Nas suas aulas, e é por isso que funcionou.

13
mfontanini
6
posttool

Você provavelmente tinha using namespace std; antes no seu código que você fez na aula. Isso diz explicitamente ao pré-compilador para procurar os símbolos em std, o que significa que você não precisa std::. Embora seja uma boa prática para std::cout em vez de cout, você invoca explicitamente std::cout todas as vezes. Dessa forma, se você estiver usando outra biblioteca que redefina cout, ainda terá o comportamento std::cout em vez de outro comportamento personalizado.

3
Hans Z

"std" é um namespace usado para o STL (Standard Template Library). Por favor, consulte http://en.wikipedia.org/wiki/Namespace_ (computer_science) # C.2B.2B

Você pode escrever "use namespace std;" antes de usar qualquer função stl, variáveis ​​ou simplesmente insira "std ::" antes deles.

1
Edmund