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.
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;
}
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.
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.
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";
main()
function is missed.There should be a main()
function in C++ ,and you should put cout
into a function.