use*_*666 4 c++ templates class operator-overloading
一个简单的C++ OO问题重新定位模板和运算符重载:在下面的类中,我重载了索引运算符两次:
template<class A, class B>
class test
{
A a1;
B a2;
public:
A& operator[](const B&);
B& operator[](const A&);
};
Run Code Online (Sandbox Code Playgroud)
现在,如果我使用相同的类型名实例化此模板类的对象:
test<int, int> obj;
Run Code Online (Sandbox Code Playgroud)
调用索引运算符将导致错误,因为两个重载函数将具有相同的签名.
有什么方法可以解决这个问题吗?
对不起,如果这是一个基本问题.我仍在学习!
您可以添加部分专业化:
template<class A>
class test<A, A>
{
A a1, a2;
public:
A& operator[](const A&);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |