gpt4 book ai didi

c++ - 如何通过指针调用函数?

转载 作者:行者123 更新时间:2023-11-27 23:01:12 25 4
gpt4 key购买 nike

我有一些基类,我在其中存储了一个指向派生类函数的指针。我需要从两个地方通过指针调用一个函数:从 BaseClass 和从派生类。

template < class T >
class BaseClass {
private:
typedef void ( T::*FunctionPtr ) ();
FunctionPtr funcPtr;
public:
void setFunc( FunctionPtr funcPtr ) {
this->funcPtr = funcPtr;
( this->*funcPtr )(); // I need to call it here also but it doesn't work
}
};

class DerivedClass: public BaseClass < DerivedClass > {
public:
void callMe() {
printf( "Ok!\n" );
}
void mainFunc() {
setFunc( &DerivedClass::callMe );
( this->*funcPtr )(); // works fine here
}
};

错误:左手操作数 -> * 必须是指向与右手操作数兼容的类的指针,但它是“BaseClass *”

最佳答案

( this->*funcPtr )();

是用于调用 funcPtr 的错误语法,因为 funcPtr 的类型是 void T::*()

你需要使用:

( (static_cast<T*>(this))->*funcPtr )();

关于c++ - 如何通过指针调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com