C++ vector数组声明错误导致'no member named'问题解决
C++ vector数组声明错误导致'no member named'问题解决
在使用C++编写代码时,你可能会遇到类似 'Line 14: Char 21: error: no member named 'value' in 'std::vector<Solution::my_type, std::allocatorSolution::my_type>'' 的报错信息,特别是在处理结构体和vector容器时。
报错原因:
上述报错信息指出代码试图访问一个名为'value'的成员,但该成员在 'std::vector<Solution::my_type, std::allocatorSolution::my_type>' 类型中并不存在。这通常是由于错误地将 vector 声明为数组导致的。
问题代码示例:
vector <my_type> solu[nums.size()];
for(i=0;i<nums.size();i++){
solu[i].value=nums[i];
solu[i].index=i;
}
解决方案:
要解决这个问题,您需要使用 vector 的构造函数或 push_back 方法来正确地创建和填充 vector。
修改后的代码:
vector<my_type> solu; // 创建一个空的vector
for (i = 0; i < nums.size(); i++) {
my_type temp; // 创建一个临时的my_type对象
temp.value = nums[i];
temp.index = i;
solu.push_back(temp); // 将temp对象添加到solu中
}
代码解释:
vector<my_type> solu;: 创建一个名为solu的空vector,用于存储my_type类型的对象。my_type temp;: 在循环的每次迭代中,创建一个名为temp的临时my_type对象。temp.value = nums[i];和temp.index = i;: 将nums向量中的值和索引分别赋值给temp对象的value和index成员。solu.push_back(temp);: 使用push_back方法将temp对象添加到solu向量的末尾。
通过这种方式,您就可以避免 'no member named' 错误,并正确地使用 vector 存储结构体数据。
原文地址: https://www.cveoy.top/t/topic/oaC 著作权归作者所有。请勿转载和采集!