D:\class\QT\homework\day4\player\widget.cpp:89: error: call to non-static member function without an object argument
时间: 2023-07-01 22:27:04 浏览: 124
这个错误通常是因为你试图调用一个非静态成员函数,但是没有给它传递一个对象参数。在C++中,非静态成员函数必须通过一个对象来调用,因为它们需要访问该对象的成员变量和成员函数。
例如,如果你有一个类`MyClass`,其中有一个非静态成员函数`myMemberFunction()`,你需要创建一个`MyClass`对象来调用该函数,如下所示:
```
MyClass obj;
obj.myMemberFunction();
```
如果你试图在不传递对象参数的情况下调用`myMemberFunction()`,就会出现类似于你遇到的错误。
因此,你需要检查你的代码,在调用非静态成员函数时是否已经创建了一个对象,并将其传递给函数。
相关问题
dialog.cpp:129:21: error: call to non-static member function without an object argument
这个错误通常是因为你尝试在一个非静态成员函数中调用另一个非静态成员函数时,没有给这个函数提供一个对象参数。这个对象参数指的是调用这个成员函数的对象,也就是说,你需要先创建这个对象,然后使用这个对象来调用这个成员函数。
例如,在下面的代码中:
```
class MyClass {
public:
void func1() {
// do something
}
void func2() {
// call func1 without an object argument
func1();
}
};
int main() {
MyClass obj;
obj.func2();
return 0;
}
```
在 `func2` 中调用 `func1` 时,没有给 `func1` 提供一个对象参数。解决方法是要么将 `func1` 声明为静态成员函数,要么在调用 `func1` 时提供一个对象参数。例如:
```
class MyClass {
public:
void func1() {
// do something
}
void func2() {
// call func1 with an object argument
this->func1();
}
};
int main() {
MyClass obj;
obj.func2();
return 0;
}
```
在 `func2` 中使用 `this->func1()` 来调用 `func1` 并提供一个对象参数。
TransmitDataUpdateThread.cpp:10:42: error: call to non-static member function without an object argument
这个错误通常出现在调用了一个非静态成员函数,但没有给它传递对象的实例作为参数。
例如,在以下代码中:
```
class MyClass {
public:
void myFunction() {
// do something
}
};
int main() {
MyClass::myFunction(); // 错误:没有给 myFunction() 传递实例对象
return 0;
}
```
`MyClass` 中的 `myFunction()` 是一个非静态成员函数,需要通过类的实例对象来调用。但在 `main()` 函数中,我们却没有创建 `MyClass` 的任何实例,直接调用了 `myFunction()` 导致编译器报错。
解决方法是创建一个 `MyClass` 的实例,并通过该实例来调用 `myFunction()`,例如:
```
int main() {
MyClass myObject; // 创建 MyClass 的实例
myObject.myFunction(); // 通过实例对象调用成员函数
return 0;
}
```
如果你提供更多代码或上下文,我可以更好地帮助你解决这个问题。