c++ - 如何在不使用异常的情况下检查 constructor() 中的失败?

标签 c++ exception constructor

我正在处理的所有类都有 Create()/Destroy()(或 Initialize()/Finalized())方法。

Create() 方法的返回值是bool,如下所示。

bool MyClass::Create(...);

所以我可以通过返回值来检查实例的初始化是否成功。

如果没有 Create()/Destroy(),我可以在 constructor() 和 destroy() 中做同样的工作,但我无法解决以下问题。

谁能帮帮我?提前致谢。

我不能使用异常(exception),因为我的公司不喜欢它。

class Foo
{
private:
    AnotherClass a;
public:
    Foo()
    {
        if(a.Initialize() == false)
        {
            //???
            //Can I notify the failure to the user of this class without using exception?
        }
    }
    ...
};

Foo obj;

最佳答案

如果不想使用异常,有两种方法可以让调用者知道构造函数是否成功:

  1. 构造函数采用指向参数的引用/指针,将错误状态传达给调用者。
  2. 该类实现了一个方法,该方法将返回构造函数的错误状态。调用者将负责检查此方法。

如果您采用其中任何一种技术,请确保您的析构函数可以处理构造函数失败的实例。

关于c++ - 如何在不使用异常的情况下检查 constructor() 中的失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951093/

相关文章:

c++ - 创建任务并返回值

java - 捕获 Hibernate 异常

c++ - 如何使我的 uninitialised_allocator 安全?

c++ - C++对象构造方法的区别

c++ - 错误 C2248 : Protected Default Constructor C++ within an class owned by another class

c++ - <sizeof(T)> 作为 C++ 中的继承类模板参数

c++ - 当存在要复制的值数组时,在 C++ 中重载 = 运算符

c++ - 如何重新设计/修复此程序以允许封装?

c++ - Qt平台如何独立捕获异常?

java - 澄清java异常赋值中所要求的内容