在结构类型之后定义结构变量
Defining structure variable after structure type
#include <iostream>
struct people
{
int id;
} person; // that part
int main()
{
person = {3};
std::cout << person.id;
return 0;
}
我想问你关于初始化结构的问题(好吧,不是初始化...正在创建结构类型...我真的不知道你怎么称呼这个(。一旦我看到了结构之后的一些关键字,比如这里的"人"。所有这些都没有任何类型定义。
我做了一些研究,发现它用于直接在结构之后定义一个变量。
但是,我上面发布的代码无法编译 - 它说语法错误,缺少分号和废话,这意味着表达式无效。
这是用来做什么的,如何使用它?
你不能在普通赋值中使用结构初始化语法,必须在声明变量时完成:
struct people
{
int id;
} person = { 3 };
如果您有兼容 C++11 的编译器,则可以稍后使用统一的初始化语法进行复制:
person = people { 3 };
struct people
{
int id;
} person; // that part
Person 是类型 people
的全局对象。
person = {3};
在 C++03 中不正确,在 C++11 中正确,因为{3}
将被视为people{3}
一旦我看到了结构之后的一些关键字,比如这里的"人"。
这不是一个关键词,而是一个名字。如果您愿意,可以在定义类类型的同一语句中声明类类型的变量。它等效于两个单独的声明:
struct people
{
int id;
};
people person;
但是,我上面发布的代码无法编译
听起来您的编译器不支持 C++11(特别是来自大括号列表的赋值(,或者您正在禁用它进行编译。
如果您不能使用 C++11,则必须单独分配每个成员:
// person = {3}; // C++11 only
person.id = 3;
或者声明并初始化一个本地对象并从中分配:
people temp = {3};
person = temp;
或在其声明中初始化它,而不是推迟到main
:
struct people
{
int id;
} person = {3};
相关文章:
- 在类构造函数中使用结构变量
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 如何从其他结构访问受保护的结构变量
- 指向结构变量的指针未保存到eeprom
- 为什么我的程序没有更改结构变量中的值?
- 在 CPP 中初始化 typedef 结构变量
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- 有没有办法初始化不涉及编写构造函数的新结构变量?
- 结构变量查询
- 在结构声明的分号之前声明的结构变量是否为全局变量
- C++ 如何访问指针的结构变量
- 使用指向结构变量成员的指针访问该结构的成员的地址
- 为什么在 sizeof() 函数中与 * 运算符一起使用和不使用 * 运算符时,指向结构变量的指针大小会有所不同?
- 如何在类别内的类中访问类中的结构变量
- 尝试使用文本文件初始化多个结构变量
- 从类对象到结构变量的 memcpy
- C++结构变量初始化时出现问题
- 如何在 C++ 中使用带有类/结构变量的列表
- 动态数组添加元素而不创建结构变量/对象