我试图将结构用作类的成员函数的包装器。我有一个模板化的结构,该结构应该保存一个指向成员函数的指针,但是从一般意义上讲,它并不指向实例的特定函数。我已经弄清楚了模板规范化,但是还不能弄清楚该函数存储的语法。
更清楚:我有X
类,该类具有非静态功能doY()
和doZ()
。在我创建的类A
中,我有一个名为X
的{{1}}实例。根据情况,我想调用其中一个功能。我制作了一个名为ex
的结构。 wrapper
应该使用模板规范化在名为Wrapper
的静态变量中存储对doY()
或doZ()
的引用。然后,我应该可以呼叫function
来运行ex.wrapper::function
或ex.doY()
。
这是我代码的当前版本(显示某些B类的专业化知识),这会导致ex.doZ()
错误
.h
func is not a member of wrapper
.cpp
template <class T>
class A
{
T timer;
X ex;
template<class Type>
struct create_timer_getter{};
void doSomething()
{
timer = ex.wrapper<T>::func();
}
};
答案 0 :(得分:0)
谢谢molbdnilo,该语法已正确编译。
成员声明指针的语法为return_type(class_name :: variable_name)(parameter_types)。指向成员的指针取消引用运算符是。和-> *
从那时起,我还发现了另一种可行的语法:
typedef return_type (class_name::user_defined_type_name)(parameter_types);
user_defined_type_name variable_name = &namespace(if needed)::class_name::member_function_name;