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);
}

代码解释

  1. vector<my_type> solu; 创建了一个名为soluvector容器,用于存储my_type类型的对象。
  2. 在循环中,每次迭代都会创建一个临时的my_type对象temp
  3. temp.value = nums[i];temp.index = i; 分别将当前元素值和索引赋值给temp对象的对应成员变量。
  4. solu.push_back(temp); 使用push_back方法将temp对象添加到solu容器的末尾。

通过上述修改,代码将不再报错,并且solu容器将按照预期存储所有数据。

C++ vector用法错误导致'no member named'报错解决

原文地址: https://www.cveoy.top/t/topic/n8R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录