C++ error: class std::vector<> has no member named ‘‘

问题场景:

在 cpp文件中, 使用 vector<结构体名称> xxx 来代替指针/数组 定义一串结构体 时。

问题描述

代码:

#include <iostream>
#include <vector>

using namespace std;

struct node {
    int type;   
};
...

vector<node> nodes[100];  /* 定义 */

...
int main() {
	...
    nodes[0].type = 0;   /* 使用 */ /* 出错地点 */
 	...
    return 0;
}

error:

error: 'class std::vector<node>' has no member named 'type'|

||=== Build: Debug in tmp (compiler: GNU GCC Compiler) ===|
C:\Users\main.cpp||In function 'int main()':|
C:\Users\main.cpp|28|error: 'class std::vector<node>' has no member named 'type'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

原因分析:

我本来是想通过 vector 定义一个一位的 vector 数组的, 但由于之前都是用的数组,就习惯性的在变量名后填了[100], 所以会出错。

定义 vector nodes[100]; 那 nodes就相当于一个 二维数组了。
在使用 nodes[0] 时, nodes[0]是一个结构体数组, 不是一个结构体实例。 结构体数组没有 type 这个变量,所以 nodes[0].type = 0会报错。

解决方案:

使用一维结构体
定义 vector<node> nodes; node nodes[size];
使用 不用修改

使用二维结构体
定义 vector<node> nodes[size]; node nodes[size][size]; 。或 vector<vector<node>> nodes
使用 需要修改nodes[index].type = 0 修改为 nodes[index_1][index_2].type = 0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值