c++ - 在 C++ 中创建类型未知的模板 vector (空模板)

标签 c++ templates

我有一个 C++ 模板类,它包含一个方法指针和一个类指针,并且只有一个方法,call ,调用类指针上的方法指针。

这个模板叫做Method< C > , C 是类和方法指针的类。

我想创建此模板的数组 ( std::vector ),但我希望此 vector 能够包含此模板的不同类。我的最终目标是遍历此 vector 并调用 call每个元素的方法,即使它们有不同的类。

你会怎么做?

最佳答案

您不能将模板存储在vector中,只能存储具有类型对象。而template在实例化的时候就变成了type

因此,您不能完全按照自己的意愿行事。

我建议您使用functionbind。看一个例子:

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/

相关文章:

c++ - 异常处理 C++

c++ - 使用 shared_ptr 将 base 抽象为 boost.python 的持有者

c++ - 我可以编写一个返回函数的函数类型吗?

c++ - 为什么我在所有像素的双 for 循环中使用 SDL2 和 SDL_RenderCopy 时性能不佳?

c++ - 如何使用 GDAL C++ 从 shapefile 中删除特征?

c++ - 为嵌套容器制作模板函数

c++ - 为什么只能在头文件中实现模板?

c++ - 在 Objective C 中包含模板化 C++

c++ - 如何将参数转发给模板成员函数到 C++ 中的成员基类指针

c++ - 带有运算符语法的错误消息,但不是带有函数语法的错误消息