)
我想知道如何创建指向模板类的引用或指针 其中我不知 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/