1

我有一个简单的Q。

如果我们有一个具有动态分配成员(或使用动态分配的成员)的类,并且我们经常使用该成员,那么处理该成员上的某些操作失败的最佳方法是什么。
Ofc 有 try catch 但我不是在谈论那个。

1)我在谈论这样一个事实,即现在成员处于不应该的状态(这里我不是在谈论泄漏资源,我在谈论一个事实,例如我们想将 100 个元素推回 std::vector 但我们只添加 47).

现在,例如,当我们调用另一个方法 sendToDB 时,我们将向 DB 发送 47 个而不是 100 个项目。我对解决的猜测是在所有公共方法上都有 bool 返回值(尝试全有或全无(又名 push_back all 100 或 push 0),如果我们确实设法推动 100,则返回 false,如果我们推动 0,则返回 false。

2)但这仍然存在动态分配成员的问题(例如shared_ptr)。这是否意味着使用它的每个方法都必须执行以下操作:

bool MyClass::sendDataToDB()
{
    if (! m_DBConnection ) //m_DBConnection is std::shared_ptr
    return false;
   //...


}
4

1 回答 1

1

我不完全理解你的问题,但我明白了:

在您的班级中,您有一个存储(类似的东西vector),然后您想在其中插入一些东西,并且操作可能会在其中失败。所以你想知道是插入失败还是操作完成!我对吗?如果答案是肯定的,我认为最好的解决方案是在失败的情况下iostream设置一个fail状态,你可以稍后检查它或者可以throw exception但无论如何,设置fail位可以向每个人发出我的对象处于失败状态的信号

于 2012-11-01T09:56:04.193 回答