У меня есть следующие:Как каскад -> оператор?
typedef struct Node_struct
{
int number;
Node *nextNode;
Node *prevNode;
} Node;
и позже
Node *nodeInSet = lookup(set, number);
nodeInSet->nextNode = (Node *) malloc(sizeof(Node));
nodeInSet->nextNode->prevNode
последняя строка говорит: «Выражение должно иметь указатель на класс типа». Я не вижу, как мой код ошибочен. Поскольку nodeInSet->nextNode
является Node *
, я думаю, мне должно быть позволено написать nodeInSet->nextNode->prevNode
. Что здесь не работает?
Я также подозреваю, что вы используете неправильный компилятор в противном случае [Не отвергни возвращаемое значение из 'таНос()'] (http://stackoverflow.com/a/605858/1983495). Вы можете написать это, но вы действительно не должны. Из примера кода невозможно сказать, почему происходит ошибка, можете ли вы опубликовать воспроизводимый образец? Кроме того, не будет 'nodeInSet-> nextNode-> prevNode' быть' nodeInSet'? если список правильно заполнен. –
внутри 'Node_struct'' typedef Node' еще не определен, поэтому вы должны объявить 'struct Node_struct * nextNode' – bolov
, определение структуры не должно быть typedef'd. typedef'ing загромождает код, приводит к неправильному пониманию, не добавляет значения и загромождает пространство имен компилятора. Скорее всего, используйте: «struct Node_struct» – user3629249