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

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

X-omil

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值