‘cout’ не называет тип

Я изучал книгу Адама Дроздека «Структуры данных и алгоритмы в C ++», ну, я набрал код на странице 15 в своем vim и скомпилировал его в терминале моего Ubuntu 11.10.

#include  #include  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; } }; 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; 

Но есть некоторая ошибка:

 [email protected]:~$ g++ unproper.cpp -o unproper unproper.cpp:15:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] unproper.cpp:16:1: error: 'cout' does not name a type unproper.cpp:17:7: error: expected constructor, destructor, or type conversion before '(' token unproper.cpp:18:1: error: 'node2' does not name a type unproper.cpp:19:1: error: 'cout' does not name a type 

Я искал это , это , это и это , но я не могу найти ответ.

Любая помощь будет оценена 🙂

Проблема в том, что код, который у вас есть, делает печать вне любой функции. Заявления в C ++ должны находиться внутри функции. Например:

 #include  #include  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; } 

У вас отсутствует объявление функции вокруг вашего программного кода. Следующее должно решить вашу ошибку:

 #include  #include  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; } 

Ошибка, которую вы затем получаете (что-то вроде «неверного преобразования из int в char *»), заключается в том, что вы пытаетесь установить целочисленное значение (30) на строковый атрибут (имя) с

 node2.name=30; 

я думаю

 node2.age=30; 

будет правильным.

Функция main() пропущена. В C ++ должна быть функция main() , и вы должны поместить cout в функцию.

Если вы хотите использовать cout вне функции, вы можете сделать это, собирая значение, возвращаемое cout в boolean.see, приведенный ниже пример

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

вывод:

 error prog.cpp:4:14: error: cannot convert 'std::basic_ostream' to 'bool' in initialization bool b=cout<<"1"; 

В том числе:

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

Вам поможет. Эта проблема обычно возникает у тех, кто учится в книге, в которой они обычно не используют основную функцию после нескольких глав.

  • Какой примитивный тип данных - time_t?
  • Закругленные края в кнопке C # (WinForms)
  • В чем разница между File.ReadLines () и File.ReadAllLines ()?
  • Утилизирует ли stream streamreader stream streamа?
  • Как проверить, является ли строка допустимым URL-адресом HTTP?
  • Инъекция зависимостей против местоположения службы
  • Что делать 1. # INF00, -1. # IND00 и -1. # IND означает?
  • Запятая в макросе C / C ++
  • Как определить, является ли строка числом с C ++?
  • Как исправить «Свойство ConnectionString не было инициализировано»
  • Как подключиться к базе данных Unity
  • Давайте будем гением компьютера.