"->"的基本操作数具有非指针类型
base operand of ‘->’ has non-pointer type
首先,代码:
// ...
struct node_list {
node_list *prev;
node *target; // node is defined elsewhere in the application
node_list *next;
};
node_list nl_head;
int main() {
nl_head->prev = &nl_head;
// ...
return 0;
}
我得到一个错误:
make (in directory: #####)
g++ -Wall -std=c++11 -o main main.cc
main.cc: In function ‘int main(int, char**)’:
main.cc:38:9: error: base operand of ‘->’ has non-pointer type ‘node_list’
nl_head->prev = &nl_head;
^
Makefile:8: recipe for target 'main' failed
make: *** [main] Error 1
Compilation failed.
据我所知,我的语法是正确的。有人能指出错误吗?
在有人将其标记为重复之前,我知道这与其他几个问题类似,但他们的解决方案似乎都不适合我。除非我做错了,我承认这是可能的,但这就是我来这里的原因。
nl_head
不是指针。尝试nl_head.prev
如错误消息和问题标题所示。nl_head
不是指针,因此不能使用->
运算符。
把它做成一个指针。你还需要分配内存,然后才能使用它
或者,您可以而不是使其成为指针,而是使用点运算符来访问其成员。
nl_head
是node_list
结构的对象,它不是指针,因此使用点运算符并分配loa:
nl_head.prev = &nl_head;
相关文章:
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 如何访问在 c++ 中在类内声明的结构类型指针变量?
- (C )找到基本类型指针的儿童类型
- 表达式必须具有指向对象的指针类型(指针向量)
- 将子项复制构造到父类型指针中
- C 返回类型指针声明
- 调用虚拟函数而不通过类类型指针创建任何对象
- C++ 如何使用类类型指针制作向量
- 为什么基类型指针不能获取派生类对象的地址值?
- 如何在 C++ 中获取映射类型指针,映射
- 如何检查该类型的类型指针是正确对齐的
- 正在转换为短类型指针
- 指向任意类方法的模板非类型指针
- 如何通过强制转换类型指针将字符数组转换为uint16_t
- 指向shared_ptr的不透明类型 C 指针
- C++:从值类型指针强制转换为包含迭代器
- C/C++:访问给定类型指针的位置与访问另一类型指针的相同位置不同
- 比较类型指针
- 数据类型指针使用*(Datatype *)
- 如何打印c++中char类型指针的所有值