base operand of ‘->’ has non-pointer type ‘List’ {aka ‘LNode’}
时间: 2024-09-25 16:04:39 浏览: 28
这个错误信息提示你在使用箭头(`->`)运算符的时候,尝试对非指针类型的变量进行解引用操作。在C++中,`->`通常用于访问结构体或类的对象成员,它的左边必须是一个指向该类型对象的指针。
在这个上下文中,“base operand of ‘->’”是指向某个结构体`List`(等同于`LNode`)的指针,而这里的`base`(基础)并不是一个指针,所以出现了错误。
例如,在下面的代码片段中可能会出错:
```cpp
List L; // 这里L是一个LNode类型的变量,而不是指针
L->member; // 错误,因为L不是一个指针,不能用->访问其成员
```
正确的做法应该是先确保`L`是一个指向`List`结构体的指针,然后才能使用`->`:
```cpp
List* L = new List(); // 或者其他创建指针的方式
*L -> member; // 正确地通过指针访问成员
```
如果`List`是一个结构体而非类,那么它本身就代表一个实例,不会拥有指针,这时候你需要明确地声明你需要操作的是指针,或者检查代码逻辑是否需要对`List`进行解引用操作。
相关问题
base operand of ‘->’ has non-pointer type ‘Employee’
这个错误提示一般出现在你使用了箭头操作符 "->",但操作符左边的变量不是一个指针类型。
比如说,如果你有一个 Employee 类型的对象 emp,你可以使用 "." 操作符来访问它的成员变量和成员函数,如下所示:
```
Employee emp;
emp.name = "张三";
emp.age = 30;
emp.printInfo();
```
但如果你有一个指向 Employee 对象的指针 empPtr,你需要使用箭头操作符 "->" 来访问它的成员变量和成员函数,如下所示:
```
Employee *empPtr = new Employee();
empPtr->name = "张三";
empPtr->age = 30;
empPtr->printInfo();
```
请注意,箭头操作符左边的变量必须是指针类型。如果不是指针类型,就会出现上述的编译错误提示。
[Error] base operand of '->' has non-pointer type 'Account'
这个错误通常是由于将结构体或类名(或者实例化的对象)用“.”操作符而不是“->”操作符访问成员变量或成员函数引起的。请检查你的代码,看看你是否正确使用了“->”来访问Account结构体的成员变量或成员函数。另外,也需要确保你已经按照正确的方式创建了Account的实例。如果还有疑问,可以提供更多的上下文和源代码以便更好地给出答案。