gpt4 book ai didi

c++ - 给定一个仅包含 bool 类型成员的结构的两个对象 s1 和 s2,只要 s1 的成员为真,就检查 s2 的每个成员是否为真

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:37 25 4
gpt4 key购买 nike

我有一个结构 S,它只包含一个 bool 类型 Bool 的元素。这些元素不存储在数组中。因此,该结构的形式为 struct s { Bool a, b, c, ... };

现在,我有两个类型为 S 的对象 o1o2,我需要一个函数 test 执行以下操作:

bool test(S o1, S o2)
{
if (o1.a && !o2.a)
return false;
if (o1.b && !o2.b)
return false;
if (o1.c && !o2.c)
return false;

...

return true;
}

有更好的方法吗?结构 S 将来可能会发生变化(即可能会添加一些字段;可能会删除其他字段),而 test 应该执行相同的工作。

例如,我们可以将 reinterpret_cast &o1&o2 指向类型为 Bool* 的指针并执行检查,但也许有更好的选择。

(请注意,S 是由我正在使用的库给出的,因此我无法更改其定义。)

最佳答案

Is there any better way to do that?

没有。只需编写代码即可。

The struct S might change in the future (i.e. some fields may be added; others may be removed) while test should perform the same work.

然后您必须检查涉及其中一个字段的每个函数的实现的正确性,包括您的测试方法。

We could, for example, reinterpret_cast &o1 and &o2 to pointers of type Bool*

因此代码变得脆弱,依赖于不可移植的未定义行为并且主要是偶然工作?这似乎是一种成本,无法通过某人不必可能改变方法的微小好处来承担可能在未来的某个时候。

像一个明智的程序员一样编写明智的代码,不要乱搞那些毫无意义的疯狂技巧。

关于c++ - 给定一个仅包含 bool 类型成员的结构的两个对象 s1 和 s2,只要 s1 的成员为真,就检查 s2 的每个成员是否为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48255074/

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