c++ - 具有相同签名的 C++ 模板类运算符重载
问题描述
一个简单的 C++ OO 问题重新分级模板和运算符重载:在下面的类中,我重载了索引运算符两次:
template<class A, class B>
class test
{
A a1;
B a2;
public:
A& operator[](const B&);
B& operator[](const A&);
};
现在,如果我用相同的类型名实例化这个模板类的一个对象:
test<int, int> obj;
调用索引运算符将导致错误,因为两个重载函数将具有相同的签名。
有没有办法解决这个问题?
对不起,如果这是一个基本问题。我仍在学习!
解决方案
您可以添加部分专业化:
template<class A>
class test<A, A>
{
A a1, a2;
public:
A& operator[](const A&);
};
推荐阅读
- r - 提取邮政编码、LSOA 代码和 IMD - SPARQL
- c# - BaseController ASPCore MVC
- javascript - 如何将 mongo 查找查询的结果添加到另一个查找查询中
- python - 使python函数输入一个列表
- java - Java - 使用 SOAPMessage 请求模拟肥皂调用
- javascript - 使函数使用对象作为其作用域
- machine-learning - 当有多个正确标签时,如何训练机器学习分类模型?
- javascript - 在 Grunt Build 工具缩小并连接到一个文件后手动替换 HTML 脚本标签?
- vba - 代码独立工作,但不作为整个程序的一部分
- excel - Excel:从另一个工作表中的值过滤工作表