‘cout’ does not name a type

后端 未结 5 2131
死守一世寂寞
死守一世寂寞 2020-12-01 11:02

I was learning Adam Drozdek\'s book \"Data Structures and Algorithms in C++\", well, I typed the code in page 15 in my vim and compiled it in terminal of my Ubuntu 11.10.

相关标签:
5条回答
  • 2020-12-01 11:21

    The problem is that the code you have that does the printing is outside of any function. Statements in C++ need to be inside a function. For example:

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    struct Node{
        char *name;
        int age;
        Node(char *n = "", int a = 0){
            name = new char[strlen(n) + 1];
            strcpy(name, n);
            age = a;
        }
    };
    
    
    int main() {
        Node node1("Roger", 20), node2(node1);
        cout << node1.name << ' ' << node1.age << ' ' << node2.name << ' ' << node2.age;
        strcpy(node2.name, "Wendy");
        node2.name = 30;
        cout << node1.name << ' ' << node1.age << ' ' << node2.name << ' ' << node2.age;
    }
    
    0 讨论(0)
  • 2020-12-01 11:25

    Including:

    int main()
    { //code 
      return 0;
    }
    

    will help you. This problem usually occurs to those who are learning from book in which they usually don't use main function after a few chapters.

    0 讨论(0)
  • 2020-12-01 11:28

    You are missing the function declaration around your program code. The following should solve your error:

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    struct Node{
        char *name;
        int age;
        Node(char *n = "", int a = 0){
            name = new char[strlen(n) + 1];
            strcpy(name, n);
            age = a;
        }
    };
    
    int main()
    {
        Node node1("Roger", 20), node2(node1);
        cout << node1.name << ' ' << node1.age << ' ' << node2.name << ' ' << node2.age;
        strcpy(node2.name, "Wendy");
        node2.name = 30;
        cout << node1.name << ' ' << node1.age << ' ' << node2.name << ' ' << node2.age;
    }
    

    The error you then get (something like "invalid conversion from int to char*") is because you try to set an integer value (30) to a string attribute (name) with

    node2.name=30;
    

    I think

    node2.age=30;
    

    would be correct.

    0 讨论(0)
  • 2020-12-01 11:33

    If you want to use cout outside the function you can do it by collecting the value returned by cout in boolean.see the below example

    #include<iostream>
    using namespace std;
    
    bool b=cout<<"1";
    
    int main()
    {
    
    return 0;
    
    }
    

    output:

    error prog.cpp:4:14: error: cannot convert 'std::basic_ostream<char>' to 'bool' in initialization
     bool b=cout<<"1";
    
    0 讨论(0)
  • 2020-12-01 11:41

    main() function is missed.There should be a main() function in C++ ,and you should put cout into a function.

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