1

私は単純なQを持っています。

動的に割り当てられたメンバー(または動的割り当てを使用したメンバー)を持つクラスがあり、そのメンバーを頻繁に使用する場合、そのメンバーで失敗した操作を処理する最良の方法は何ですか。
トライキャッチがありますが、それについては話していません。

1)私は、メンバーが本来あるべきではない状態にあるという事実について話している(ここでは、リソースのリークについて話しているのではなく、たとえば、std::vector に 100 個の要素を push_back したいという事実について話しているが、私たちは追加 47)。

たとえば、他のメソッド sendToDB を呼び出すと、100 個ではなく 47 個のアイテムが DB に送信されます。解決するための私の推測は、すべてのパブリック メソッドで bool の戻り値を取得することです (すべてまたは何もしない (別名 push_back すべて 100 または 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 に答える