C++ 更新/初始化函数或构造函数(构造时数据不可用)

C++ 更新/初始化函数或构造函数(构造时数据不可用),c++,class,exception,constructor,C++,Class,Exception,Constructor,我有一个存储一些数据的类。 问题是在施工时数据不可用 重要提示:这些类用于具有只读类(仅getter)的SDK。 这些类只存储来自在线API的数据 当数据可用时,我应该使用指针并创建(分配)对象吗? 这需要一个构造函数,当数据无效或构造函数在某个点失败时抛出异常 或者我应该为对象定义一个默认构造函数并实现一个update/init函数,该函数初始化类成员。 这个解决方案会产生一个问题,在调用update函数之前,我有一个“僵尸”对象。 第二个问题是您可能忘记调用update/init函数->导致

我有一个存储一些数据的类。 问题是在施工时数据不可用

重要提示:这些类用于具有只读类(仅getter)的SDK。 这些类只存储来自在线API的数据

当数据可用时,我应该使用指针并创建(分配)对象吗? 这需要一个构造函数,当数据无效或构造函数在某个点失败时抛出异常

或者我应该为对象定义一个默认构造函数并实现一个update/init函数,该函数初始化类成员。 这个解决方案会产生一个问题,在调用update函数之前,我有一个“僵尸”对象。
第二个问题是您可能忘记调用update/init函数->导致第一个问题。

根据CPP核心指南():

C.41:构造函数应该创建一个完全初始化的对象

构造函数为类建立不变量的原因。类的用户 应该能够假设构造的对象是可用的

如果有效对象不能方便地由 构造函数,使用工厂函数

其次是:

C.42:如果构造函数无法构造有效对象,则抛出 例外

留下无效对象的原因是请求 麻烦


.

根据CPP核心指南():

C.41:构造函数应该创建一个完全初始化的对象

构造函数为类建立不变量的原因。类的用户 应该能够假设构造的对象是可用的

如果有效对象不能方便地由 构造函数,使用工厂函数

其次是:

C.42:如果构造函数无法构造有效对象,则抛出 例外

留下无效对象的原因是请求 麻烦