从静态创建方法中的基类调用非静态方法
Call non-static method from base class in static create method
我想写一个静态创建方法,从基类调用一个非静态方法。
<BaseClass.h>
class BaseClass
{
public:
void method();
}
<MyClass.h>
class MyClass : public BaseClass
{
static MyClass* createMyClass();
}
<MyClass.cpp>
...
MyClass* MyClass::createMyClass()
{
MyClass* myclass = new MyClass();
method(); // Error, illegal call of non-static member function
return myclass;
}
...
那么,我必须在createMyClass方法之外调用基类方法吗?或者有任何可能的方法在内部调用它吗?
非静态方法需要在实例上调用,编译器不会假装足够聪明,无法知道要在哪个实例上调用它(除非您使用实例方法)。您需要在刚刚创建的MyClass
实例上显式调用方法:
myclass->method();
(另一种想法是:在非静态上下文中,使用语法method();
调用方法相当于this->method();
。由于在静态上下文中没有"this",因此需要自己提供"this"。)
相关文章:
- MFC 中的窗口消息管理:添加基类调用是否是强制性的?
- 从基类调用函数的多态性
- 为什么派生类的实例从基类调用方法?
- 从基类调用重写的方法
- C++ 基类调用但返回派生类
- 从基类调用继承类的方法.C++
- 哪个基类调用派生重写的方法?
- C++ 基类调用已删除或无法访问的函数
- 从具有泛型返回类型的 crtp 基类调用派生类中的函数
- C :基类调用自己的虚拟函数 - 一个反图案
- 使用基类调用派生类
- 使用基类调用放置新
- 继承和重写 - 从基类调用重写子方法
- 继承:从基类调用派生的类功能
- 从基类调用派生的类构造函数
- C 从基类调用派生类功能
- 从基类调用重写的方法
- 抽象基类调用父级的纯虚函数
- 从基类C++调用虚拟方法
- 如何从非虚拟的基类调用析构函数