2017-06-01 149 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 */ 
    }; 
}; 
相关问题