给出的是以下类(只是标题):
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/