4

このロジックを C++ で実装しようとしています。

Object obj(args);
while (obj.isOK()) {
    obj = obj.next();
}

しかし、Object継承するboost::noncopyableため、代入演算子がないため、この正確なコードを使用することはできません。メソッドとコンストラクターをObject, に追加できます (ただし、コピー可能にすることはできません)。他の質問には、解決策として新しい手動の破棄と配置がObjectあります. どのような代替手段がありますか?

4

2 に答える 2

3

Object::nextその場で変異させObjectます。はコピー可能ではないためObject、これはとにかく実行する唯一の賢明なことのObject::nextようです。

于 2015-11-08T08:06:01.150 に答える
-1

何をObject::next返しますか?フレッシュが返された場合は、移動代入演算子を次Objectのように追加できます。Object

Object& operator=(Object&& obj)
{
    //move its iternal state to this and then
    return *this;
}

したがって、データの複製は行われず、実際には何もコピーされません。

于 2015-11-08T10:23:14.397 に答える