当C++中不存在对象时,如何使其清楚

How to make it clear when an object does not exist in C++?

本文关键字:何使其 清楚 对象 C++ 不存在      更新时间:2023-10-16

我有一个类,根据应用程序的状态和用户选项,它可能不总是能够以任何有意义的状态存在。

当对象不存在时,最好的方法是什么?

到目前为止,我想到了两个想法,以及为什么我不相信它们不是答案:

  1. 当对象不存在时,智能指针设置为NULL,这会发送一个明确的消息,表明这里没有对象,但我读到使用"new"的动态内存分配应该是例外,而不是C++中的规则,它还阻止我通过引用其他函数来传递(因为指针可能并不总是指向对象)
  2. 对象中的布尔标志,当设置该标志时,会导致调用的任何方法引发异常。这需要对每种方法进行检查,感觉像是一个拼凑。我还认为,最好的做法是,所有存在的对象都应该是有效的,我们不需要调用validate(或类似)函数,因为对象的存在意味着它已经有效,可以调用它的方法

boost::optional<T>。它的存在正是出于这个原因。

我认为您想要NULL对象模式。

您从基类继承了它的"null"实现。因此,它与主对象具有相同的方法和属性,但不执行任何操作。然后将其作为一个常量。每当变量不处于可用状态时,将其分配给null对象。如果使用它,不会发生任何错误,并且您可以检查它是否等于您的null对象实例。

您可以创建一个表示NULL版本的对象的子类。请参阅维基百科上的NULL对象模式。

使用共享库,当您使用dlsym()导出符号时,如果成功导出,则对象存在,否则对象不存在。