gpt4 book ai didi

c++ - 如何让 struct 一次只存储一个变量? C++

转载 作者:行者123 更新时间:2023-11-30 01:08:46 25 4
gpt4 key购买 nike

据我所知,在 union 中,所有成员共享相同的内存。对于结构,它们不共享内存,因此为结构的每个成员分配了不同的内存空间。

我的解决方案要求我创建一个结构,它只会将值存储在结构中存储的一种类型中;表现得像一个 union 。我不能使用 union 的原因是因为指定的“类型”之一是字符串,并且 union 中不能包含字符串变量。如何确保一次只有一个结构成员占用内存空间?

最佳答案

您需要一个缓冲区(大小为 max(sizeof(T1), sizeof(T2), sizeof(T3)...))、新位置和一个要记住的枚举变量哪个对象当前在缓冲区中。它被称为“标记 union ”。然后你需要编写成员函数来安全地控制这个人工授精对象的生命周期。最后,您需要花几天时间理清所有对齐要求。

但这就是 boost::variant 所做的,所以只需使用它即可。它也将很快成为 std::variant

关于c++ - 如何让 struct 一次只存储一个变量? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com