Я начинаю играть с C++, исходя из C и Objective C (и немного Java). Я думал, что неплохо начать строить свои навыки, написав простую хеш-таблицу с нуля, используя связанные списки для коллизий. Поэтому я начал писать скелеты для каждого класса.C++ class ordering
class HashTable
{
public:
...
private:
...
};
class LinkedList
{
public:
...
private:
Node *root;
};
class Node
{
public:
Node *next;
string key;
int value;
Node()
{
...
}
};
Странная вещь об этом, и это не может прийти в любой сюрприз для C++ пользователей, что этот код не будет работать. Я бы получил ошибку:
error: expected type-specifier before ‘Node’
относительно корневого узла в классе LinkedList.
Когда я просто переупорядочил классы, так что это было Node{...}; LinkedList{...}; HashTable{...};
все работало, как хорошо смазанный грузовик мороженого.
Теперь я не стану подвергать сомнению дизайн C++, но есть ли причина для этого ограничения? Если я правильно помню, Obj. Класс C по существу превращается в таблицы и выглядит «на лету». Итак, в чем причина такого поведения?
Я не знаю. Если у меня есть одна жалоба на C++, это так. Другие люди жалуются на уродливый синтаксис, я этого не понимаю, мне кажется, что синтаксис довольно изящный. Или они жалуются, что у него нет функций высокого уровня. Который, на мой взгляд, полный вздор, для чего нужны библиотеки. Если бы я мог исправить одну вещь о C++, это была бы эта проблема, которую вы описали. –
Вы прочитали книгу на C++, верно? – GManNickG
Я действительно разместил это, а затем отправился в библиотеку, чтобы схватить его! – kodai