1
我有一个类似的一段代码:如何解决函数重载造成的歧义?
#include <iostream>
using namespace std;
template<typename T>
class Class
{
public:
Class() {}
void foo(T) {cout << "foo(T) is called \n";}
void foo(T&) {cout << "foo(T&) is called \n";}
};
int main()
{
Class<int> c;
int a = 1;
c.foo(1);
c.foo(a);
return 0;
}
我想拥有的功能foo
两个重载,因为foo(T&)
更有效,但因为它的参数和foo(T)
将用于工作,我不能使用常量字面常量虽然不如foo(T&)
有效。但是,当我定义这两个函数时,将会执行c.foo(a)
时出现模糊的调用。
error: call of overloaded 'foo(int&)' is ambiguous
我该如何解决这个问题?
使用一个函数'无效美孚(const T&)'。 –