его определением? Как с методами например
void Test();
void Test() {
//Do SMTH
}
Но если я пишу такое же с классом
class Test;
class Test{
//Do SMTH
}
то выбивает ошибка "use of undefined type Test"
Нет, это невозможно
У классов нет объявления, есть только полное определение и forward declaration - не знаю, как перевести на русский. Аналога объявления для классов нет.
а каким образом тогда мне можно определить объект класса который находится ниже, в классе который выше? Т.е. вот так class Test{ void Method(Test1 test); } class Test1{ }
Forward declaration
class Test1; class Test{ void Method(Test1 *test); }; class Test1{ // ... };
вот если я так обьявляю то пишет "use of undefined type Test1"
нет, ты ошибаешься, попробуй ещё раз.
https://pastebin.com/HhKAskNQ
Тут проблема в другом. Ты в функции void SetInfo(Human* h) { h->name="SET"; } используешь этот класс, его члены, это нельзя делать для неопределённых классов (для которых есть только forward declaration). Для этого надо иметь класс полностью определённым. А для этого надо поместить определение метода ПОСЛЕ определения класса, который он использует.
Обсуждают сегодня