【发布时间】:2018-05-30 08:59:40
【问题描述】:
我有一个带有构造函数的模板类,它接受参数作为参考。我正在寻找一种在调用函数中传递变量的方法。
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;
}
错误:没有构造函数“Data::Data[with T=bool]”的实例 匹配参数列表的参数类型是:(bool)
【问题讨论】:
-
T & data->const T & data? -
没有必要将 bool 作为
const&发送,您无法修改,并且 bool 比指针小 -
感谢您的意见。但是如果不是const怎么处理呢?
-
你的构造函数没有尝试修改传入的参数,没有理由使参数非
const(并且参数“不关心”是否声明了原始值const与否)
标签: c++ templates pass-by-reference