[Error] D:\实验\888\main.cpp:137: error: base operand of `->' is not a pointer
时间: 2024-03-06 08:10:31 浏览: 116
这个错误通常是因为你在使用 `->` 运算符时,左侧的对象不是一个指针类型。在 C++ 中,`->` 运算符用于访问指针所指向的对象的成员。
检查一下你的代码中,左侧的对象是否为指针类型。如果不是,你可以使用 `.` 运算符来访问对象的成员。如果你想访问指针所指向的对象的成员,需要使用 `*` 运算符先解引用指针,然后再使用 `.` 或 `->` 运算符访问成员。例如,如果 `p` 是一个指向 `MyClass` 类型的指针,你可以使用 `(*p).member` 或者 `p->member` 来访问 `MyClass` 类的 `member` 成员。
相关问题
D:\data structure\homework(c)\main.cpp|183|error: base operand of '->' has non-pointer type 'NODE<int>'|
This error message suggests that you are trying to use the "->" operator on a variable that is not a pointer. The "->" operator is used to access a member of a pointed-to object.
For example, if you have a pointer to a struct called "person":
```c++
struct person {
string name;
int age;
};
person* ptr_person = new person;
```
You can access the "name" member using "->":
```c++
ptr_person->name = "John";
```
However, if you try to use "->" on a non-pointer variable, you will get the error you described:
```c++
NODE<int> myNode;
myNode->data = 5; // Error: myNode is not a pointer
```
To fix this error, you should use the "." operator instead of "->" when accessing members of non-pointer objects:
```c++
NODE<int> myNode;
myNode.data = 5; // This is correct
```
C:\Users\11580\Desktop\SerialportTest\SerialportTest\mainwindow.cpp:72: error: base operand of '->' has non-pointer type 'QSerialPort' QString str = serialport->readAll(); ^怎么解决
这个错误的原因是你在使用指针时,指针类型不正确。在这个错误中,`serialport`应该是一个`QSerialPort`的指针,但是它被当做了一个非指针类型来使用。
为了解决这个错误,你需要检查你的代码,查找是否有地方将`serialport`定义为非指针类型。如果是这种情况,你可以使用`&`操作符获取指针。如果`serialport`本来就是指针类型,你需要检查是否正确初始化并且没有被释放。
另外,你也可以检查`QSerialPort`的文档,确定`readAll()`是否是一个成员函数,如果不是,你需要使用`.`而不是`->`操作符。
阅读全文