Why std::cout instead of simply cout?

后端 未结 7 1907
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-30 02:17

I get these error messages for all cout and endl:

main.cc:17:5: error: ‘cout’ was not declared in this scope
main.cc:17:5: note: sugges         


        
相关标签:
7条回答
  • 2021-01-30 02:37

    You probably had using namespace std; before in your code you did in class. That explicitly tells the precompiler to look for the symbols in std, which means you don't need to std::. Though it is good practice to std::cout instead of cout so you explicitly invoke std::cout every time. That way if you are using another library that redefines cout, you still have the std::cout behavior instead of some other custom behavior.

    0 讨论(0)
  • 2021-01-30 02:41

    Everything in the Standard Template/Iostream Library resides in namespace std. You've probably used:

    using namespace std;
    

    In your classes, and that's why it worked.

    0 讨论(0)
  • 2021-01-30 02:46

    If you are working in ROOT, you do not even have to write #include<iostream> and using namespace std; simply start from int filename().

    This will solve the issue.

    0 讨论(0)
  • 2021-01-30 02:48

    In the C++ standard, cout is defined in the std namespace, so you need to either say std::cout or put

    using namespace std;
    

    in your code in order to get at it.

    However, this was not always the case, and in the past cout was just in the global namespace (or, later on, in both global and std). I would therefore conclude that your classes used an older C++ compiler.

    0 讨论(0)
  • 2021-01-30 02:54

    "std" is a namespace used for STL (Standard Template Library). Please refer to https://en.wikipedia.org/wiki/Namespace#Use_in_common_languages

    You can either write using namespace std; before using any stl functions, variables or just insert std:: before them.

    0 讨论(0)
  • 2021-01-30 02:55

    It seems possible your class may have been using pre-standard C++. An easy way to tell, is to look at your old programs and check, do you see:

    #include <iostream.h>
    

    or

    #include <iostream>
    

    The former is pre-standard, and you'll be able to just say cout as opposed to std::cout without anything additional. You can get the same behavior in standard C++ by adding

    using std::cout;
    

    or

    using namespace std;
    

    Just one idea, anyway.

    0 讨论(0)
提交回复
热议问题