如何通过引用传递参数到模板类的成员函数?

Rah*_*hul 2 c++ templates pass-by-reference

我有一个带有构造函数的模板类,它接受参数作为参考.我正在寻找一种在调用函数中传递变量的方法.

template <typename T>
class Data : public ParentClass
{
    T m_data;
public:
    Data(T & data);
    T data() const;
};

template <typename T>
Data<T>::Data(T & data) : m_data(data)
{}

template <typename T>
T Data<T>::data() const
{
    return m_data;
}

int main()
{
    Data<bool> * d = new Data<bool>(true);
    std::cout << d->data() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

错误:没有构造函数"Data :: Data [with T = bool]"匹配参数列表参数类型的实例是:(bool)

son*_*yao 6

您不能将rvalue(ie true)绑定到非const lvalue-reference(即bool&).例如,你做不到bool& b = true;.

要解决此问题,您可以将参数类型更改为Tconst T&.