从继承的函数指针调用基方法
Call base method from inherited function pointer
基类包含一个指向成员函数的函数指针。我如何从派生类调用这个成员函数?我想通过它的指针来调用这个函数。下面是我到目前为止的代码:
#include <iostream>
class Base
{
public:
Base() {FuncPtr = &Base::Func1;}
Base(int num) {
if(num==1)
FuncPtr = &Base::Func1;
else if(num==2)
FuncPtr = &Base::Func2;
else
FuncPtr = NULL;
}
protected:
void (Base::*FuncPtr)(float ,float );
void Func1(float x,float y) { std::cout << "Func1 calledn";}
void Func2(float x,float y) { std::cout << "Func2 calledn";}
};
class Derived : private Base
{
public:
Derived() {}
Derived(int num) : Base(num) {}
void callBaseFunc1 (float x,float y) { this->Func1 (x,y);} // works
void callBaseFuncViaPtr (float x,float y) { this->(*FuncPtr)(x,y);} // wrong ...
};
int main()
{
Derived Test;
Test.callBaseFunc1 (2.72f,3.14f); // works
Test.callBaseFuncViaPtr (2.72f,3.14f); // syntax error in function declaration...
getchar();
return 0;
}
谢谢
就快完成了,只需移动父元素:
void callBaseFuncViaPtr (float x,float y) { (this->*FuncPtr)(x,y);}
相关文章:
- 在c++中多次调用方法
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 接收字符串并使用它来调用方法C++
- 使用 gmock c++ 在真实对象上调用方法
- 不带预处理器的调用方法/文件的文件名/行号
- JNI从Android调用C++方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 从内部类中的方法从包含类调用方法
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 为什么派生类的实例从基类调用方法?
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过模板函数对未知类型调用方法
- 从基于迭代器的for循环转换后,如何在map::find()中调用方法
- 创建一个C++DLL以从C#DLL调用方法
- 如何从qt中的类中调用方法
- 如何在不迭代的情况下对数组中的每个元素调用方法
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法