各种编程语言中的关键字,其语法类似于或派生自C(C ++,C#,Swift,Go,Rust等)。使用特定的编程语言标记来标记涉及使用`struct`作为语法的问题,语义可以依赖于语言。关键字定义或声明由其他数据类型组成的数据类型。结构的每个成员都有自己的内存区域(而不是“union”,其成员共享一个内存区域)。
如果我定义这样的结构: .bss 节 结构米斯特鲁克 .x:resb 1 .y:resb 1 恩斯特鲁克 我如何获得结构的长度?
我是生锈新手。我有这个代码: 枚举 Foo { F1 { x: Vec, y: i32 }, F2 { x: &Bar }, } 结构栏{ x:i32, y:Vec, } 显然,这不会编译,因为...
在同一联合内使用 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(或其中任何其他重要类型)的正确构造和销毁。
我正在练习推和弹出。为此,我使用 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。
我想知道如何使结构在库内部和外部标头中都可见。让我尝试用下面的代码来解释 我有一个结构: 类型定义结构{ 整数a; 整数b; }
我有一个 C++ 代码,其中有一个结构体和结构体列表。在我的结构中,第一个元素是一个字符串。在结构列表中,如何对结构的第一个元素进行排序,以便之后...
我正在尝试创建一个物品和盒子系统,其中一个盒子可以在其中容纳灵活数量的物品(即,不要通过使每个盒子有 50 个物品而浪费内存,而有些盒子只有几个物品)。 ...
我在下面有一个简单的代码: int 全局 1(int x) { 返回 x * 5; } int 全局2(int x) { 返回 x + 5; } 结构一些_结构{ 整数a; int foo1(int x) { 返回 x * a; } int foo2(我...
例如,如何为这个系统调用sys_wait4准备参数: asmlinkage long sys_wait4(pid_t pid,unsigned int __user *stat_addr, int options, struct rusage __user *ru) 1120 { 如何应对
我的内存分配不正确,因此我遇到了段错误。我想创建一个由二维案例(结构)表表示的棋盘游戏。 对于上下文,我正在编写俄罗斯方块游戏。
有人可以告诉我下面的代码有什么问题吗? #包括 使用命名空间 std; typedef 结构点{ int 键; 结构点 * key0; } pnt; int main() { pnt * p = n...
我正在尝试构建一个客户端/服务器应用程序,该应用程序在客户端建立 TCP 连接并通过字符缓冲区发送已解析的 JSON 文件。但首先,我需要解析 JSON 文件,...
使用@State但出现错误:无法在不可变值上使用变异成员:'self'是不可变的
请有人解释一下,为什么如果我在 onAppear 中定义实例(t2Array),为什么我可以添加另一个 eventArray,而如果我在结构体的开头将其声明为 @State(t3Array),我会收到错误:
我需要搜索一个大结构并找到所有同名组件的索引。 例如:如果名称是 13hy,我需要返回一个数组 [1,5] 结构(1,1).name = '13hy' 结构(...
如何在 Swift 中使用名为“Type”的键解码 JSON? [重复]
我正在使用别人的API。它返回给我的 JSON 如下: [{“ID”:123, “名称”:“我的游戏API”, “类型”:“赛车”, “数量”:0, ”
我正在研究Go,它看起来很有前途。 我试图弄清楚如何获取 go 结构的大小,例如 例如 类型 Coord3d 结构体 { X、Y、Z int64 } 当然...
我在尝试在 Swift 协议一致性中使用内部或私有类型时遇到问题。这是我的代码的简化版本: 内部协议 RATIONAL { 关联类型理性...
我有这个结构: 类型电影结构体{ ID字符串 标题字符串 演员 []struct { 名称字符串 城市字符串 状态字符串 国家/地区字符串 } } 然后我就有了我的sql...
C - 如何释放一个双空指针,该指针具有使用 malloc 分配给它的动态结构数组
我的C看起来像这样。 typedef 结构体 { 无效*fooStruct; } 事物; typedef 结构体 foo { int *somethingNumber; 烧焦一些东西; } foo; 外部无效 **double_ptr; 无效*ptr; int主要...