从继承的函数指针调用基方法
Call base method from inherited function pointer
我的基 class 包含一个指向成员函数的函数指针。如何从派生的 class 中调用此成员函数?我想通过它的指针调用这个函数。
到目前为止,这是我的代码:
#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 called\n";}
void Func2(float x,float y) { std::cout << "Func2 called\n";}
};
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);}
我的基 class 包含一个指向成员函数的函数指针。如何从派生的 class 中调用此成员函数?我想通过它的指针调用这个函数。 到目前为止,这是我的代码:
#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 called\n";}
void Func2(float x,float y) { std::cout << "Func2 called\n";}
};
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);}