给定以下类(仅 header ):
class Example {
public:
template<class C>
Example(bool(C::*callbackFunc)(Foo&) = nullptr) : callbackFunc(callbackFunc);
template<class C>
??? getCallbackFunc() const {
return callbackFunc;
}
private:
// store the func ptr
template<class C>
bool (C::*callbackFunc)(Foo&);
};
getter
getCallbackFunc()
的正确返回类型是什么? 最佳答案
您的问题的答案是:
bool(C::*)(Foo&)
但是,这将无济于事,因为您无法在类实例中存储模板变量:
template<class C>
bool (C::*callbackFunc)(Foo&);
那不是合法的变量声明,您真的不能解决它。
将
callbackFunc
替换为std::function< bool(void*, Foo&) > callbackFunc;
然后在
Example
ctor中编写一个函数,将成员ptr转换为这样的函数。它涉及从void*
到C*
的静态转换。获取回调函数返回:
std::function< bool(C*, Foo&) >
这可以从
callbackFunc
隐式转换为。您可以通过传入
C*
和Foo&
来使用它。关于C++函数指针返回类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39550464/