指向模板类成员函数的函数指针
Function pointer to template class member functions
我有一个模板化类(部分)定义为
template <class T> MyClass
{
public:
void DoSomething(){}
};
如果我想从另一个类调用 DoSomething,但能够在同一位置为多个"T"类型执行此操作,我陷入了一个想法,因为方法函数指针唯一地约束到类类型。当然,每个 MyClass 都是不同的类型,所以我不能以"多态"方式存储指向 MyClassDoSomething() 的函数指针。
我的用例是,我想在保持类中存储指向"DoSomething"的函数指针向量,以便我可以从一个地方对所有存储类发出调用。
有人有什么建议吗?
好的
,所以函子解决方案不能按您需要工作。也许你应该让你的模板类继承自一个公共的基本"接口"类。然后你使用其中的向量。
像这样:
class Base {
public:
virtual ~Base(){}
virtual void DoSomething() = 0;
}
template <class T> class MyClass : public Base {
public:
void DoSomething(){}
};
std::vector<Base *> objects;
objects.push_back(new MyClass<int>);
objects.push_back(new MyClass<char>);
你知道,这正是我需要做的。 奇怪的是,我很早就将其视为对我的用例有效的解决方案,原因现在我忘记了。我想我被我在同一个地方为编译时调度所做的一些元编程工作蒙蔽了双眼(即在我混乱的大脑中混淆了编译时间和运行时)。
谢谢你的震动!
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针