struct 相关问题

各种编程语言中的关键字,其语法类似于或派生自C(C ++,C#,Swift,Go,Rust等)。使用特定的编程语言标记来标记涉及使用`struct`作为语法的问题,语义可以依赖于语言。关键字定义或声明由其他数据类型组成的数据类型。结构的每个成员都有自己的内存区域(而不是“union”,其成员共享一个内存区域)。

如何获取结构的长度? (NASM)

如果我定义这样的结构: .bss 节 结构米斯特鲁克 .x:resb 1 .y:resb 1 恩斯特鲁克 我如何获得结构的长度?

回答 1 投票 0

引用结构的枚举变体

我是生锈新手。我有这个代码: 枚举 Foo { F1 { x: Vec, y: i32 }, F2 { x: &Bar }, } 结构栏{ x:i32, y:Vec, } 显然,这不会编译,因为...

回答 1 投票 0

在联合体中使用 std::string 和 int

在同一联合内使用 std::string (或其他非平凡类型)与 int (或其他平凡和非平凡类型)是否正确? 我已经这样实现了: #包括 在同一联合内使用 std::string(或其他非平凡类型)与 int(或其他平凡和非平凡类型)是否正确? 我已经这样实现了: #include <iostream> #include <string> struct Foo { enum Type {data_string, data_int}; int m_type; Foo(Type t) : m_type(t) { if (t == Type::data_string) { new (&s) std::string(); } } ~Foo() { if (m_type == Type::data_string) { s.~basic_string(); } } union { int n; std::string s; }; }; int main() { Foo f1(Foo::Type::data_string); f1.s = "hello "; std::cout << f1.s; Foo f2(Foo::Type::data_int); f2.n = 100; std::cout << f2.n; } 而且效果非常好。但我不确定这段代码。从 C++ 标准角度来看,它是正确的代码吗? 您不应该将 union 与非平凡类型一起使用。 联合并不意味着处理其中 C++ 对象的正确构造和析构。 您在代码中手动处理了它,这在技术上是正确的,但很容易出错。如果你在联盟中建造或破坏了错误的类型,你很容易进入UB土地。 一般来说,在 C++ 中,建议使用 std::variant 作为通用求和类型。 因此,我建议使用以下内容代替您的工会: std::variant<int, std::string> m_value; 这样你的 Foo 构造函数和析构函数就可以被 default 编辑。该变体将负责 std::string(或其中任何其他重要类型)的正确构造和销毁。

回答 1 投票 0

emplace_back 正在将结构推入我的数组(C++)

我正在练习推和弹出。为此,我使用 emplace_back 函数将结构推入我的数组中。 这是我的代码: #包括 #包括 #包括 我正在练习推和弹出。为此,我使用 emplace_back 函数将结构推入我的数组中。 这是我的代码: #include <string> #include <vector> #include <iostream> #include <string_view> struct Person { std::string name{}; int age{}; }; int main() { std::vector<Person> nums{{"Daniel", 34}, {"Jose", 39}, {"Martin", 22} }; nums.emplace_back("Malena", 30); for (auto const& a : nums) std::cout << a.name << " " << a.age << '\n'; return 0; } 错误: In file included from /Users/xxx/CLionProjects/test/main.cpp:1: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:504: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string_view:175: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__string:57: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:643: /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:1881:31: error: no matching constructor for initialization of 'Person' ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:1773:18: note: in instantiation of function template specialization 'std::__1::allocator<Person>::construct<Person, char const (&)[7], int>' requested here {__a.construct(__p, _VSTD::forward<_Args>(__args)...);} 如有任何帮助,我们将不胜感激。 这需要 C++20。 C++17 或更早版本中的一些选项是: 为 Person 定义一个构造函数 显式传递对象:nums.emplace_back(Person{"Malena", 30}); 使用push_back代替带花括号的初始值设定项列表:nums.push_back({"Malena", 30}); 编译在 C++ 20 中编译得很好。 请参阅演示1。 如果必须使用旧版本的 C++,则应将以下构造函数添加到 Person: Person(std::string const & n, int a) : name(n), age(a) {} 参见演示2。

回答 2 投票 0

使结构在库和应用程序中可见 - C

我想知道如何使结构在库内部和外部标头中都可见。让我尝试用下面的代码来解释 我有一个结构: 类型定义结构{ 整数a; 整数b; }

回答 4 投票 0

强制C++结构紧密包装

我正在尝试读取二进制文件。问题在于文件的创建者没有花时间将数据结构与其自然边界正确对齐,并且所有内容都包装得很紧。这...

回答 3 投票 0

对结构列表进行排序

我有一个 C++ 代码,其中有一个结构体和结构体列表。在我的结构中,第一个元素是一个字符串。在结构列表中,如何对结构的第一个元素进行排序,以便之后...

回答 3 投票 0

如何在另一个结构中创建灵活的结构?

我正在尝试创建一个物品和盒子系统,其中一个盒子可以在其中容纳灵活数量的物品(即,不要通过使每个盒子有 50 个物品而浪费内存,而有些盒子只有几个物品)。 ...

回答 1 投票 0

C++ 调用结构体函数的指针

我在下面有一个简单的代码: int 全局 1(int x) { 返回 x * 5; } int 全局2(int x) { 返回 x + 5; } 结构一些_结构{ 整数a; int foo1(int x) { 返回 x * a; } int foo2(我...

回答 1 投票 0

在汇编中,你如何处理C结构体?

例如,如何为这个系统调用sys_wait4准备参数: asmlinkage long sys_wait4(pid_t pid,unsigned int __user *stat_addr, int options, struct rusage __user *ru) 1120 { 如何应对

回答 2 投票 0

尝试分配 2D 结构表时写入无效

我的内存分配不正确,因此我遇到了段错误。我想创建一个由二维案例(结构)表表示的棋盘游戏。 对于上下文,我正在编写俄罗斯方块游戏。

回答 1 投票 0

指针和结构体的问题(C++)

有人可以告诉我下面的代码有什么问题吗? #包括 使用命名空间 std; typedef 结构点{ int 键; 结构点 * key0; } pnt; int main() { pnt * p = n...

回答 1 投票 0

使用函数将解析后的 JSON 文件存储到结构体数组中?

我正在尝试构建一个客户端/服务器应用程序,该应用程序在客户端建立 TCP 连接并通过字符缓冲区发送已解析的 JSON 文件。但首先,我需要解析 JSON 文件,...

回答 1 投票 0

使用@State但出现错误:无法在不可变值上使用变异成员:'self'是不可变的

请有人解释一下,为什么如果我在 onAppear 中定义实例(t2Array),为什么我可以添加另一个 eventArray,而如果我在结构体的开头将其声明为 @State(t3Array),我会收到错误:

回答 1 投票 0

Struct 中的字符串比较 (Matlab)

我需要搜索一个大结构并找到所有同名组件的索引。 例如:如果名称是 13hy,我需要返回一个数组 [1,5] 结构(1,1).name = '13hy' 结构(...

回答 3 投票 0

如何在 Swift 中使用名为“Type”的键解码 JSON? [重复]

我正在使用别人的API。它返回给我的 JSON 如下: [{“ID”:123, “名称”:“我的游戏API”, “类型”:“赛车”, “数量”:0, ”

回答 1 投票 0

Go 中的 Sizeof 结构体

我正在研究Go,它看起来很有前途。 我试图弄清楚如何获取 go 结构的大小,例如 例如 类型 Coord3d 结构体 { X、Y、Z int64 } 当然...

回答 6 投票 0

在 Swift 协议一致性中使用内部或私有类型的困难

我在尝试在 Swift 协议一致性中使用内部或私有类型时遇到问题。这是我的代码的简化版本: 内部协议 RATIONAL { 关联类型理性...

回答 1 投票 0

将值解组到 struct golang

我有这个结构: 类型电影结构体{ ID字符串 标题字符串 演员 []struct { 名称字符串 城市字符串 状态字符串 国家/地区字符串 } } 然后我就有了我的sql...

回答 1 投票 0

C - 如何释放一个双空指针,该指针具有使用 malloc 分配给它的动态结构数组

我的C看起来像这样。 typedef 结构体 { 无效*fooStruct; } 事物; typedef 结构体 foo { int *somethingNumber; 烧焦一些东西; } foo; 外部无效 **double_ptr; 无效*ptr; int主要...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.