我有以下模板类:
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)`
知道我做错了吗?
答案 0 :(得分:1)
在此次电话会议中
pool.return_resource(5);
创建了一个int类型的临时对象,其值为5作为函数参数。
临时对象不能与非常量引用绑定。
声明像
这样的函数template <typename T> class ResourcePool {
inline void return_resource( const T& instance) {
/* do something */
};
};
答案 1 :(得分:1)
您正在将临时文件传递给期望引用的函数。这种绑定无法完成。尝试:
public MyExceptoin extends Exception{
public MyException(Throwable cause){
super(null, cause);
}
}
或
template <typename T> class ResourcePool {
inline void return_resource(const T& instance) { // <---
/* do something */
};
};