C ++ Template类:错误:没有用于调用的匹配函数

时间:2017-06-01 10:52:51

标签: c++ templates

我有以下模板类:

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)`

知道我做错了吗?

2 个答案:

答案 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 */
    };
};