C++ 错误:尝试从向量值构造模板化对象时,没有匹配的构造函数

C++ 错误:尝试从向量值构造模板化对象时,没有匹配的构造函数,c++,C++,我有以下模板类MyObject和SmallObject。下面,我有一个MyObject的构造函数,它将向量作为输入,并将向量中的每个项转换为SmallObject。但是,当它在测试中运行时,它返回一个错误,表示没有匹配的构造函数 我不知道怎么回事,我猜我从向量中得到的值不是t型的,但我不明白怎么会是这种情况。这也是相关部分的一个简化片段,因此不必担心它对SmallObj和内存泄漏没有任何作用 template<typename T> SmallObj<T>::SmallO

我有以下模板类
MyObject
SmallObject
。下面,我有一个
MyObject
的构造函数,它将向量作为输入,并将向量中的每个项转换为
SmallObject
。但是,当它在测试中运行时,它返回一个错误,表示没有匹配的构造函数

我不知道怎么回事,我猜我从向量中得到的值不是t型的,但我不明白怎么会是这种情况。这也是相关部分的一个简化片段,因此不必担心它对SmallObj和内存泄漏没有任何作用

template<typename T>
SmallObj<T>::SmallObj(T& value) : _value(value) {}

template<typename T>
MyObject<T>::MyObject(const std::vector<T>& values) {
  int n = values.size();

  for (int i = 0; i < n; i++) {
    SmallObject<T>* node = new SmallObject<T>(values[i]); // error: no matching constructor
  }
}
模板
SmallObj::SmallObj(T&value):\u value(value){}
模板
MyObject::MyObject(常量std::向量和值){
int n=values.size();
对于(int i=0;i
参数
作为引用传递给
常量
,然后
值[i]
返回
常量T&
。而
SmallObj
的构造函数引用了不能绑定到常量的非常量。如果不应该修改参数,可以更改构造函数以引用
const

template<typename T>
SmallObj<T>::SmallObj(const T& value) : _value(value) {}
模板
SmallObj::SmallObj(const T&value):_value(value){}

只是一个疯狂的猜测,但是
SmallObject
可能与
SmallObj
不一样?
values[i]
将是一个
const T&
,但是构造函数接受
T&
@SamVarshavchik啊哦,这只是我写这个问题的一个问题,谢谢你抓住了这个问题