相关疑难解决方法(0)

如何在STL容器和成员函数调用中存储模板化对象

假设你有一个类

template<class T>
struct A {
  void foo() {
    // Need access to "T" here
    typedef typename someTrait<T>::someType T2;
  }
};
Run Code Online (Sandbox Code Playgroud)

并且您希望用容器(可能是STL)"注册"(或存储)该类的实例(或指向它的指针),以便稍后调用foo()所有已注册实例的方法.

由于要实例化用不同模板参数实例化的实例(A<int>,A<float>...)显然不能使用a std::vector并将实例或指针存储到它.我能想象的是制作方法static和存储函数指针void foo(),如:

 void static foo();

 typedef void (* fooPtr)(void);
 std::vector<fooPtr>
Run Code Online (Sandbox Code Playgroud)

但不知怎的,我觉得这不是很C++ 11-ish.是否有一个很好的解决方案,它引入了一个包装类或什么?

引入基类并使用动态转换会引入依赖关系RTTI,对吧?我想避免依赖RTTI.

如何在C++ 11中做到这一点?(我不想引入额外的依赖关系,如链接到Boost或依赖RTTI.)

谢谢你的意见!

c++ templates stl member-function-pointers c++11

3
推荐指数
2
解决办法
613
查看次数

标签 统计

c++ ×1

c++11 ×1

member-function-pointers ×1

stl ×1

templates ×1