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&)'。 –