#c #class
#c #класс
Вопрос:
Я пытаюсь создать класс, у которого есть член типа его окружающего класса, но я получаю сообщение об ошибке, в котором говорится, что поле имеет неполный тип. вот пример
class List {
public:
List (int element, List rest) {
_first = element;
_rest = rest;
}
.
.
.
}
Есть ли способ исправить эту проблему?
Комментарии:
1. Как
_rest
объявляется?
Ответ №1:
Вы не дали нам полного определения List
, но я предполагаю из вашего описания, что у вас есть что-то вроде:
class List
{
...
List _rest;
};
Очевидно, что это невозможно. Объект не может содержать элемент своего собственного типа, так как это привело бы к бесконечной рекурсии!
Возможно, вам нужен элемент, который является указателем или ссылкой?
Комментарии:
1. Ну, я не знаю, насколько это «очевидно», не похоже, что это невыполнимая задача, и множество языков с многоходовыми компиляторами допускают такую вещь.
2. @Ed — Это не имеет никакого отношения к многопроходности, но к тому, как вы храните данные. Каким был бы размер списка с внутренним списком с внутренним списком с внутренним…
3. @Bo Persson: Вы правы, это не имеет никакого отношения к многопроходности, поэтому элемент, очевидно, должен (как указано) быть указателем. Я думал, что удалил этот комментарий…
Ответ №2:
Используйте это:
'rest'
должен быть указатель на List
.