gpt4 book ai didi

c++ - 我们真的需要 std::error_category 和 std::error_condition 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:01 24 4
gpt4 key购买 nike

因此,在了解 std::error_code 工作原理的过程中,我开始怀疑我们是否真的需要 std::error_conditionstd: :错误类别。我正在尝试实现 this 中的内容和 this教程和工作量是非常重要的,而且它相当脆弱(我目前正在努力弄清楚为什么这段代码会导致链接错误与重复符号。

继承std::error_code,添加一个message属性&方法然后让std::error_code是不是更简单与定义错误代码的枚举相比?我很难理解为什么我需要 std::error_categorystd::error_condition

最佳答案

主要优点是 error_code 是一种可复制的类型,可以在不同的库之间传递,而无需涉及任何动态内存分配或模板,使其非常轻量且易于一起工作。

如果您正在编写一个完全独立的项目,那么是的,当您可以拥有自己的类型时,错误代码和类别似乎过于复杂。

但是,当编写供其他人使用的库时,情况会发生变化(例如 ASIO,因为您链接了 think-async.com)。您可以让一个库接收一个 error_code 实例,并且它将能够干净高效地传递它,而无需了解使用该库的代码的任何信息,也不必犯每一个错误 -处理函数根据错误类型进行模板化。

在这种情况下,错误类别在处理多个错误源时很重要,因为给定的错误代码可能表示基于错误源的两种不同的含义。

编辑:请注意,在您的第一个链接中,类别实际上是单例。这样做是为了保持轻量级,因为将指针复制到保证永远不会被删除或修改的对象是廉价的、内存安全的和线程安全的。

关于c++ - 我们真的需要 std::error_category 和 std::error_condition 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45868539/

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