我搜索了这个错误:
错误:在非结构或联合的情况下请求成员'prev_'
并且每个建议都使用->
,但就我而言,我已经使用->
。
这是我的代码:
struct student_record_node
{
struct student_record* record_;
struct student_record_node* next_;
struct student_record_node* prev_;
};
void swap(struct student_record_node** node1, struct student_record_node** node2)
{
struct student_recod_node* prev_;
struct student_recod_node* next_;
if(*node1->prev_)
{
node1->prev_->next_ = node2;
}
if(*node2->prev_)
{
node2->prev_->next_ = node1;
}
}
答案 0 :(得分:0)
if(*node1->prev_)
->
的运算符优先级高于*
。以上陈述相当于:
if (*(node1->prev_))
由于node1
没有指向具有此类成员的结构,这就是您获得此编译错误的原因。这应该改为:
if((*node1)->prev_)
在显示的其余代码中需要相同的修复程序。例如:
node1->prev_->next_ = node2;
这可能应该是:
(*node1)->prev_->next_ = *node2;