2017-06-01 321 views
1

我有以下的模板類:C++模板類:錯誤:沒有匹配函數調用

template <typename T> class ResourcePool { 
    inline void return_resource(T& instance) { 
     /* do something */ 
    }; 
}; 

然後,在我的主要功能,我做的:

ResoucePool<int> pool; 
pool.return_resource(5); 

我得到以下錯誤:

error: no matching function for call to `ResourcePool<int>::return_resource(int)` 

任何想法我做錯了什麼?

回答

1

在這個調用

pool.return_resource(5); 

那裏被創建int類型的臨時對象與作爲函數參數值5。

臨時對象不能綁定非常量引用。

聲明像

template <typename T> class ResourcePool { 
    inline void return_resource(const T& instance) { 
     /* do something */ 
    }; 
}; 
1

你傳遞一個臨時到期望的參考函數的功能。這綁定不能完成。嘗試:

template <typename T> class ResourcePool { 
    inline void return_resource(const T& instance) { // <--- 
    /* do something */ 
    }; 
}; 

template <typename T> class ResourcePool { 
    inline void return_resource(T instance) { // <---- 
    /* do something */ 
    }; 
}; 
相關問題