假设你有一个像
template<class T>
struct A {
void foo() {
// Need access to "T" here
typedef typename someTrait<T>::someType T2;
}
};
并且您想使用容器(可能是 STL)“注册”(或存储)类的实例(或指向它的指针),以便以后调用foo()
所有已注册实例的方法。
由于要存储使用不同模板参数实例化的实例 ( A<int>
, A<float>
, ...) 显然不能使用 astd::vector
并存储实例或指向它的指针。我能想象的是制作方法static
并将函数指针存储到void foo()
,例如:
void static foo();
typedef void (* fooPtr)(void);
std::vector<fooPtr>
但不知何故,我觉得这不是很 C++11-ish。有没有一个很好的解决方案可以引入包装类或其他东西?
引入基类并使用动态转换会引入对 的依赖RTTI
,对吧?我想避免依赖RTTI
.
在 C++11 中如何做到这一点?(我不想引入额外的依赖项,比如链接到 Boost 或依赖于RTTI
.)
感谢您的意见!