C++ vector用法错误导致'no member named'报错解决
C++ vector用法错误导致'no member named'报错解决
在一段C++代码中,出现了'no member named'的报错信息,具体代码段如下:
vector <my_type> solu[nums.size()];
for(i=0;i<nums.size();i++){
solu[i].value=nums[i];
solu[i].index=i;
}
问题分析
该错误的原因在于,代码中使用[nums.size()]的方式创建solu数组,这会将solu初始化为一个固定大小的数组,而不是一个vector容器。
解决方法
要解决这个问题,需要直接创建一个vector<my_type>类型的solu,并使用push_back方法将每个my_type对象添加到solu中。
以下是修正后的代码示例:
vector<my_type> solu;
for (i = 0; i < nums.size(); i++) {
my_type temp;
temp.value = nums[i];
temp.index = i;
solu.push_back(temp);
}
代码解释
vector<my_type> solu;创建了一个名为solu的vector容器,用于存储my_type类型的对象。- 在循环中,每次迭代都会创建一个临时的
my_type对象temp。 temp.value = nums[i];和temp.index = i;分别将当前元素值和索引赋值给temp对象的对应成员变量。solu.push_back(temp);使用push_back方法将temp对象添加到solu容器的末尾。
通过上述修改,代码将不再报错,并且solu容器将按照预期存储所有数据。
原文地址: https://www.cveoy.top/t/topic/n8R 著作权归作者所有。请勿转载和采集!