首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误C2228:'.size'的左边必须有class/struct/union

错误C2228是C++编译器的一个错误提示,它表示在使用.size成员访问符时,左边必须是一个类、结构体或联合体。

在C++中,.size是一种用于获取对象大小的成员访问符。它通常用于数组、容器或自定义的数据结构中。例如,可以使用sizeof关键字获取数组的大小,或者使用.size()成员函数获取容器的大小。

然而,当我们在使用.size成员访问符时,左边必须是一个具有成员函数或成员变量的类、结构体或联合体。如果左边不是这些类型的实例,编译器就会报错并提示错误C2228。

解决这个错误的方法是确保在使用.size成员访问符之前,左边是一个合法的类、结构体或联合体的实例。如果左边是一个指针,可以使用箭头操作符->来访问成员函数或成员变量。

以下是一个示例代码,展示了如何正确使用.size成员访问符:

代码语言:cpp
复制
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    std::cout << "Size of numbers vector: " << numbers.size() << std::endl;

    return 0;
}

在上面的示例中,我们创建了一个std::vector<int>类型的对象numbers,并使用.size()成员函数获取它的大小。最后,我们将大小打印到控制台。

对于错误C2228,腾讯云没有特定的产品或链接地址与之相关。这个错误是与C++编译器相关的,与云计算领域无直接关系。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C语言】 C 语言 关键字分析 ( 属性关键字 | 常量关键字 | 结构体关键字 | 联合体关键字 | 枚举关键字 | 命名关键字 | 杂项关键字)

结构体 联合体 关键字 ( struct | union ) 1. struct 关键字 (1) 结构体定义 使用 ( ① 结构体定义 : struct 结构体名称 {}; | ② 结构体变量声明...) (2) struct 结构体大小 (3) struct 结构体实现柔性数组 (4) 柔性数组 代码示例 ( 处理斐波那契数列 ) 3. union 联合体 关键字 (1) structunion...区别 ( struct 为每个元素分配独立空间 | union 只为最大元素分配内存空间 所有元素共享该空间 ) (2) union 联合体注意事项 ( 受大小端影响 ) 五....联合体 关键字 (1) structunion 区别 ( struct 为每个元素分配独立空间 | union 只为最大元素分配内存空间 所有元素共享该空间 ) structunion...区别 : 1.struct 分配空间 : struct 结构体 为每个结构体元素分配独立内存空间 ; 2.union 分配空间 : union 联合体 只为最大联合体元素分配内存控件, 所有的元素共享该空间

2.3K20
  • union 概念及在嵌入式编程中应用

    笔者能力有限,如果文章中出现错误地方,还请各位朋友能给我指出来,我将不胜感激,谢谢~ union 概念 union 在中文叫法中又被称为共用体,联合或者联合体,它定义方式与 struct 是相同...,但是意义却与 struct 完全不同,下面是 union 定义格式: union 共用体名 { 成员列表 }共用体变量名; 那么它与结构体定义方式相同,那么区别是什么呢,下面通过一个 struct...小结 通过上述这个例子,我们现在来回顾一下,如果不使用 union 的话,在进行数据传输时候,直接将由 struct 构造数据形成数据帧发送过去,发送数据包要比使用 union 构造数据大不少..._t buffer[PACKET_SIZE]; struct { uint8_t size; uint8_t CMD; uint8_t...} 要理解这个数据解析过程,需要用到 union成员存放在同一个地址这个特性,buffer[PACKET_SIZE]中元素与 fields 中元素是一一对应,用一张图来表示就很清楚了,如下图

    80610

    联合体(union使用方法及其本质

    1.联合体union基本特性——和struct同与不同 union,中文名“联合体、共用体”,在某种程度上类似结构体struct一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量...b呢~ 这种逻辑上错误是很难找出来(只有当数据类型相去甚远时候稍好,出个乱码什么很容易发现错误)。...(何止是unionstruct,C不就是玩地址么,所以使用C灵活,也容易犯错) 没错,union成员变量是相当于开辟了几个访问途径(即union包含变量)!但是,没开辟访问方式就不能用了?...s5 sVal5; struct s6 sVal6; printf("sVal1's size:%d\n",sizeof(sVal1)); printf...有兴趣讨论或者有发现错误,欢迎留言交流指正。 觉得好,欢迎转载并注明出处。

    1.1K10

    干货 | 结构体、联合体嵌套使用一些实用操作

    定义一个联合类型一般形式为: union 联合名 { 成员表 }; 成员表中含有若干成员,成员一般形式为:类型说明符 成员名。其占用字节数与成员中最大数据类型占用字节数。...思考一下,如果在union里面再嵌套一层union会怎么样?会变得更复杂?以前的话,我会觉得越嵌套会越复杂,我也很抵制这种不断嵌套做法。...我们看他怎么设计(看个大概图): 可以看到最左边和最右边这就建立起了一一对应关系,我们模块很多,数据很多,但是在这样设计中显得很清晰、很容易维护。...4、结构体 & 缓冲区 #define BUF_SIZE 16 union protocol_data { uint8_t data_buffer[BUF_SIZE]; struct {...5、传输浮点数据 union f_data { float f; struct { unsigned char byte[4]; }; } 类似的,使用这样子方法可以用于传输浮点数,

    3.3K30

    c语言一些题(2024_1_7)

    大端就是0 } 其过程较简单,不叙述,就展示代码   我们用是vs系统,所以vs系统是小端存储模式(大部分系统都是小端存储模式) 求结构体内存 (define认知引发错误)  这题之所以错误是对#...define认知不清楚,define执行是查找替换,并不会计算2+3,单纯是把2+3换成max_size,而不是max_size为5.所以在最后计算时max_size换回原来2+3就变为3*2+3...该题struct为位段类型,其中:和数字之所以没显示其实是把 :8隐藏了。...(之前一篇文章结构体位段中讲过) 数据在内存中存储(位段题) 其中涉及了位段,但重点不是这,是当我们将位段中数修改为其他数时,要注意一个字节内部比特位永远是高进制在左边,低进制在右边。...所以在修改时方向不要弄反,高进制比特位本该在左边,却在右边,所以一个字节内部比特位顺序一定不能变(两个字节之间顺序可以改变) 对于这个知识点,之前在结构体文章中数据在内存中存放额外知识点里讲过(更详细

    10410

    C++必知必会之基础知识-常用关键(3)

    myFlags; myFlags.isRed = 1; myFlags.isGreen = 0; myFlags.isBlue = 1; std::cout << "Size...struct 在C++中,struct是用于定义自定义数据类型关键字,它是一种用户定义数据结构,可以包含不同类型成员变量和成员函数。structclass非常相似,但有一些不同之处。...struct MyStruct { typedef int MyInt; // 定义类型别名 MyInt MyInt x; }; 需要注意是,尽管structclass都可以用来定义自定义数据类型...,但它们有一些细微差别: 在struct中,默认成员访问权限是public,而在class中,默认成员访问权限是private。...在语法上,类可以使用class关键字或struct关键字来定义,而struct只能用于定义结构体。 除了默认访问权限和默认继承权限之外,structclass在其他方面几乎是相同

    14430

    Linux进程管理(一)进程数据结构

    sched_class *sched_class; //调度实体 struct sched_entity se; struct sched_rt_entity rt; struct sched_dl_entity...void *stack; ... }; 内核栈大小在内核中定义如下: #define THREAD_SIZE_ORDER 1 #define THREAD_SIZE (PAGE_SIZE...<< THREAD_SIZE_ORDER) 一个 PAGE_SIZE 是4K,左移一位就是乘以2,所以 THREAD_SIZE 就是8K,所以大体j结构如下: 接下来我们看这8K空间结构分布...在Linux中有一个 union thread_union 共用体,其定义如下: union thread_union { #ifndef CONFIG_THREAD_INFO_IN_TASK struct...,大小为 THREAD_SIZE 个字节 union 表示是一个共用体,可以看出,thread_info 在位于这个栈最底部,如下图所示: Linux中发生系统调用时,会从用户态变成内核态,然后执行内核代码

    1.2K10

    C语言与C++面试知识总结

    "S me"; return 0; } C++ 中 structclass 总的来说,struct 更适合看成是一个数据结构实现体,class 更适合看成是一个对象实现体。...区别: 最本质一个区别就是默认访问控制 默认继承访问权限。struct 是 public class 是 private 。...struct 作为数据结构实现体,它默认数据访问控制是 public ,而 class 作为对象实现体,它默认成员变量访问控制是 private 。...union 联合 联合(union)是一种节省空间特殊类,一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。.../ 错误:被 explicit 修饰构造函数对象不可以复制列表初始化 B b5 = (B)1; // OK:允许 static_cast 显式转换 doB(1); // 错误:被 explicit

    4.9K41

    什么?CC++面试过不了?因为你还没看过这个!

    "S me"; return 0; } C++ 中 structclass 总的来说,struct 更适合看成是一个数据结构实现体,class 更适合看成是一个对象实现体。...区别: 最本质一个区别就是默认访问控制 默认继承访问权限。struct 是 public class 是 private 。...struct 作为数据结构实现体,它默认数据访问控制是 public ,而 class 作为对象实现体,它默认成员变量访问控制是 private 。...union 联合 联合(union)是一种节省空间特殊类,一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。.../ 错误:被 explicit 修饰构造函数对象不可以复制列表初始化 B b5 = (B)1; // OK:允许 static_cast 显式转换 doB(1); // 错误:被 explicit

    3.7K50

    聚合体及其初始化———指派初始化器,C++长大了,你应该知道指派初始化器

    (含classstructunion), 没有用户声明、用户提供、explicit构造函数(情形1) 没有继承构造函数(情形2) 所有成员都是公有的(没有私有/受保护非静态数据成员)(情形3)...如果聚合体是union且显示初始化元素不止一个(即联合体只能初始化一个元素) 指派初始化器初始化元素时涉及到窄化转换则出现编译错误。...char cv[4] = {'a', 's', 'd', 'f', 0}; // 错误,多余元素个数 int x[] = {}; // 错误,空初始化器列表初始化未知边界数组...//example 1 struct S { union { int a; int b; }; int c; }; S s{.a{10}, .c{30}}; //example...需要转换为int型,报错 //example 223 struct S { union { int a; int b; }; int c; }; S s{.a{10}

    11710

    如何使用io_uring构建快速响应IO密集型应用?

    出现错误时,返回负错误代码。调用方不应依赖errno变量。错误码含义EFAULT参数超出了您可访问地址空间。EINVALresv数组包含非零数据,p.flags包含非零支持标志,条目超出界限。...参数含义fd文件描述符 ,是io_uring_setup返回fdopcode操作代码成功时返回0。出现错误时,返回负错误代码。调用方不应依赖errno变量。...与提交队列条目相关错误将通过完成队列条目返回,而不是通过系统调用本身返回。不代表提交队列条目发生错误将通过系统调用直接返回。在出现这种错误时,返回负错误代码。调用方不应依赖errno变量。...提交队列条目sqe被设置为使用文件描述符sockfd来开始将数据接收到大小为size且具有修改标志flags缓冲区目的地buf中。此函数用于准备异步recv()请求。...提交队列条目sqe被设置为使用文件描述符sockfd开始从buf发送大小为size数据,并带有修改标志flags。此函数用于准备异步send()请求。

    8910

    进程间通讯(六).semaphore and shared(3)

    EINVAL:参数size小于SHMMIN或大于SHMMAX EEXIST:预建立key所指共享内存,但已经存在 EIDRM:参数key所指共享内存已经删除 ENOSPC:超过了系统允许建立共享内存最大值...semaphore. */ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW; 对信号量集标识符为...最常见设置此值等于1,只完成对一个信号量操作 如果成功则返回信号量集标识,如果出错,则返回-1,错误原因存于error中 有以下几种错误 E2BIG:一次对信号量个数操作超过了系统限制 EACCESS...union semun { int val; <= value for SETVAL struct semid_ds *buf...; /* operation permission struct */ size_t shm_segsz; /* size of segment

    61610

    【Rust笔记】浅聊 Rust 程序内存布局

    所以,tag.size = 4 Byte 字段unionunion数据结构。unionsize是全部字段size最大值。...于是,不精准地struct.size ≈ 5 Byte (约等) 此刻struct.size并不是struct.alignment自然数倍。...所以,structsize是全部字段size之和。 字段union.Variant1是单字段元组结构体且唯一字段就是u16分辨因子枚举值。...即,从enum ➜ structunion缩编至enum ➜ union 将被优化掉struct职能(— 记录选中项“索引值”)合并入了union字段子数据结构中。...另外,不同数据结构可做微调操作也略有不同: structunion,enum数据结构可上调对齐位数 仅structunion被允许下调对齐位数 数据结构【对齐位数alignment】值增加与减少需要使用不同元属性修饰符

    50120
    领券