gpt4 book ai didi

c++ - 错误 : No Matching Constructor when trying to construct a templated object from a vector value

转载 作者:行者123 更新时间:2023-12-03 07:22:39 24 4
gpt4 key购买 nike

我有以下模板类MyObjectSmallObject .下面,我有一个 MyObject 的构造函数它将 vector 作为输入并将 vector 中的每个项目转换为 SmallObject .但是,当它在测试中运行时,它会因没有匹配的构造函数而返回错误。
我不知道出了什么问题,我的猜测是不知何故我从 vector 中提取的值不是 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
}
}

最佳答案

参数values作为对 const 的引用传递,然后 values[i]返回 const T& .而 SmallObj 的构造函数引用不能绑定(bind)到常量的非常量。如果不应该修改参数,您可以更改构造函数以引用 const .

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

关于c++ - 错误 : No Matching Constructor when trying to construct a templated object from a vector value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64656428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com