我有一个 C++ 模板类,它包含一个方法指针和一个类指针,并且只有一个方法,call
,调用类指针上的方法指针。
这个模板叫做Method< C >
, C 是类和方法指针的类。
我想创建此模板的数组 ( std::vector
),但我希望此 vector 能够包含此模板的不同类。我的最终目标是遍历此 vector 并调用 call
每个元素的方法,即使它们有不同的类。
你会怎么做?
最佳答案
您不能将模板
存储在vector
中,只能存储具有类型
的对象
。而template
在实例化的时候就变成了type
。
因此,您不能完全按照自己的意愿行事。
我建议您使用function
和bind
。看一个例子:
struct A
{
void call()
{
std::cout << "hello";
}
};
int main()
{
std::vector <std::function<void()>> v;
v.push_back(std::bind(&A::call, A()));
for (auto it = v.begin(); it != v.end(); ++it) {
(*it)();
}
return 0;
}
它完全符合您的要求。
关于c++ - 在 C++ 中创建类型未知的模板 vector (空模板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149943/