报错call to non-static member function without
时间: 2024-10-22 07:16:42 浏览: 42
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
当你试图在一个非静态成员函数上调用另一个非静态成员函数时,如果没有提供该函数作用的对象实例,C++编译器会抛出错误"call to non-static member function without object"。这是因为非静态成员函数必须有一个隐式存在的对象上下文,也就是需要先创建一个对象来作为函数的主体。
举个例子:
```cpp
class MyClass {
public:
void doSomething() {
// 这里试图调用doSomethingElse(), 但是MyClass的对象没有明确地传入
doSomethingElse();
}
private:
void doSomethingElse() {} // 非静态成员函数
};
```
在这个例子中,`doSomething()`试图在其内部调用`doSomethingElse()`,但由于`doSomethingElse()`是非静态的,你需要一个`MyClass`的对象来调用它,例如:
```cpp
MyClass obj;
obj.doSomething(); // 这样是可以的,因为有对象obj作为上下文
```
如果你试图像下面这样直接调用,就会报错:
```cpp
MyClass::doSomethingElse(); // 编译错误:call to non-static member function without object
```
阅读全文