1
コピーコンストラクタまたは代入演算子を持たないクラスがあります。そのクラスのインスタンスを作成して初期化する必要があります。それ、どうやったら出来るの?問題(例)とコピーコンストラクタなしでクラスの静的インスタンスを初期化する方法>
コード:
class Q
{
int w;
public:
Q():w(19){};
Q(const Q&) = delete;
Q& operator = (const Q&) = delete;
static Q sQ;
};
Q Q::sQ = Q();
ユースケース:私はQObject
から派生したクラスを持っているので、その代入演算子を持っており、コンストラクタは削除コピーします。利用可能なクラスの静的インスタンスが存在する必要があります。どのように達成できますか?
シンプルな 'Q Q :: sQ;'はあなたのために機能しませんか? – HolyBlackCat
コピーエリミッションを保証する提案があるので、このようなコードは削除されたコピーコンストラクタやムーブコンストラクタでもコンパイルされます。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html – Brian
あなたのQのすべてが同じ赤ちゃんQで同時に妊娠しているようです。好奇心、妊娠そのものを無限に繰り返す。 Q Q :: sQの定義を採用しています。 HolyBlackCatが提案したメンバ関数void f(){std :: cout << "smoke and mirrors \ n"; }今できること \t Q q; \t q.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.f(); – Loreto