来自任何类的功能指针参数
Function Pointer parameter from any class
嘿
我想在地图上上课,该课程存储了另一个类的功能指针。
void MyClass::MyMethod((AnyClass::*func)())
{
//add to container
}
现在,我正在将功能指针存储在同一类中。但是MyMethod应该拥有自己的类,从任何类中获取功能指针(但是使用地图的一个实例只能从同一类中获取函数指针,例如OBJ1仅具有Class1的funcptr,OBJ2仅包含Class2等的funcptrs),
),typedef void (MyClass::*func_ptr(float delta);
void MyClass::MyMethod(const std::string& id, func_ptr func)
{
std::pair<std::string,func_ptr> state_pair (id,func);
state_map_.insert(state_pair);
}
我已经使用了模板尝试过,但是我认为我没有正确使用它们。谁能帮我?
是的,使用模板:
template <typename Ret, class T, typename... Args>
void MyClass::MyMethod(Ret (T::*func) (Args...))
{ }
将它们存储在容器中的方式取决于您是否仅添加具有相同签名的功能。您可以像这样的模板MyClass
模板,并创建一个用于存储一个签名的成员函数的容器。否则,您可以创建包装器函数。
编辑:
如果我正确理解您,则需要一个模板的MyClass
,该模板将从字符串到成员函数的地图和成员函数MyMethod
存储在该地图中?这样的东西:
template <typename T>
struct MyClass
{
std::map<std::string, void(T::*)(float)> m_map;
void MyMethod(const std::string &id, void (T::*func) (float))
{
m_map[id] = func;
}
};
相关文章:
- 为函数定义符号不明确的指针参数
- 构造函数 (C++) 中的 char 指针参数存在问题
- 按引用调用与按指针参数调用的差异 前递增和后递增
- 为什么具有指针参数的成员函数需要指向指针的指针?
- 通过引用函数传递指针参数是什么意思?
- 从double到double*的指针参数
- void 函数中的指针参数返回不一致的值
- 无法向上转换指针到指针参数
- 将数组动态分配到具有指针参数的函数中
- 模板函数指针参数与构造函数参数
- 使用通用函数指针参数化函数模板的简洁方法
- 如何为C++字符串分配空指针参数?
- C++带有指针参数的函数
- 指针参数的默认值
- 将常量添加到函数模板指针参数
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 不带星号的函数指针参数
- 功能指针参数参数转换为const
- 将指针参数传递给双指针参数
- 如何调试指针参数是否通过函数修改