C++ 在不知道其参数的情况下保留对模板实例的引用

标签 c++ templates

)

我想知道如何创建指向模板类的引用或指针 其中我不知 Prop 体的模板参数类型。

例如我有

vector<int>   a;
vector<float> b;

现在我希望能够创建一个变量(在本例中为 c),它可以保存对 a 或 b 的引用或任何其他特殊化的 vector ,例如:

vector<>& c; // <- generic reference to all specializations of class vector<T>
c = a;
cout << c.size() << endl;

c = b;
cout << c.size() << endl;

我知道不可能调用push_back或任何其他接受或返回模板类型参数的操作,但我只想调用size()等不支持模板类型的方法需要有关具体模板参数的知识。

非常感谢您提前提供的帮助!

最佳答案

这是不可能的。模板是编译器生成多个不相关类型的源。如果您想创建通用代码,您可以:

  • 为此使用类型删除,尽管可能不值得付出努力
  • 或者您可以编写与不同的模板相匹配的模板 模板的特化(它本身会生成 不同的函数,但您不必编写每个函数)
  • 或者,如果您可以控制模板,则可以使用来自基础的继承 输入并移动常用功能(所有功能中都存在的功能) 特化且签名不变)到基础

关于C++ 在不知道其参数的情况下保留对模板实例的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17373719/

相关文章:

c++ - 替换 std::strings

c++ - 使用 C++ 在值数组中查找最大利润 (max - min)

c++ - 如果我只想专门化模板中的一种方法,我该怎么做?

c++ - 如何在主线程繁忙时获取所有 mousemove 事件 Windows MFC C++

c++ - Polygon Offset/Minkowski sum with a sphere 算法

c++ - 制作一棵n个 child 的树来存储计算机的目录

html - 如何在golang模板中使用对象数组?

c++ - 模板类中没有匹配的函数

c++ - 通用非侵入式缓存包装器

c++ - 如何将 std::vector 设置为模板的默认参数?