問題タブ [noncopyable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - テンプレート引数がコピー不可であることを static_assert する方法はありますか?
コンパイル時に一部の型がコピー不可であることを判断する方法はありますか? 以下が必要です:
c++ - 永続ハンドルを V8 に保存するには?
v8::Context
クラスに aと av8::External
をメンバーとして保持したい。したがって、永続ハンドルを使用する必要があると考えました。
ただし、永続ハンドルは V8 ではコピーできないため、コードはコンパイルされません。エラーは、2 つのメンバーが初期化される行で発生します。コンテキストの場合、これはコンストラクターの初期化子リストにあります。外部の場合、これはコンストラクター本体の内部にあります。
1> エラー C2440: '=' : 'v8::Primitive *' から 'v8::Object *volatile ' に変換できません
1> 指す型は無関係です。
変換には、 reinterpret_cast 、C スタイルのキャスト、または関数スタイルのキャストが必要です
永続的なハンドルへのポインターを使用することを考えましたが、ハンドルの概念は既に何らかの参照を意味しているため、直観に反するように思えます。さらに、V8の内部ガベージコレクターがオブジェクトをクリーンアップできるように、ハンドルが破棄されると思います。
V8 オブジェクトをクラス メンバーとして永続的に保存するにはどうすればよいですか?
更新: 永続ハンドルへのポインターを使用しても、永続ハンドルを返すメソッドに対して同じコンパイラ エラーが発生します。
c++ - コピー不可オブジェクトのコンストラクターの選択
このような複数のコンストラクターを持つコピー不可能なクラスがあるとします
ここで、オブジェクトを作成し、実行時に使用するコンストラクターを選択します。
私はこのようなポインタでそれを行うことができます:-
しかし、それは面倒で遅いと感じます。動的割り当てに頼らずにオブジェクトのコンストラクターを選択する簡単な方法はありますか?
詳細: 上記のFoo
クラスは単に問題を説明するためのものです。実際に関係するクラスは Windows ですGdiplus::Bitmap
- http://msdn.microsoft.com/en-gb/library/windows/desktop/ms534420(v=vs.85)。 aspx
c++ - コピー不可能なオブジェクトのベクトルのベクトルを初期化することは可能ですか?
コピー不可能なオブジェクトのベクトルのベクトルを初期化することは可能ですか?
また
上記のコードがコンパイルされない理由がわかりました。私が求めているのは、回避策があるかどうかです。そのようstd::vector
なメンバー関数がresize_from_zero
コピーコンストラクターを必要としない場合、これは実行可能になるようです。
(これが違いを生む場合、私の質問は C++03 についてです)
c++ - クラスをコピー不可にするマクロ
クラスをコピー不可にする次のマクロに問題はありますか?
c++ - C++ - オブジェクトを繰り返し再初期化する方法は?
このロジックを C++ で実装しようとしています。
しかし、Object
継承するboost::noncopyable
ため、代入演算子がないため、この正確なコードを使用することはできません。メソッドとコンストラクターをObject
, に追加できます (ただし、コピー可能にすることはできません)。他の質問には、解決策として新しい手動の破棄と配置がObject
あります. どのような代替手段がありますか?
c# - C#でコピー不可能な型を作ることは可能ですか
C# で、コピーすることはできず、参照によってのみ渡すことができるクラスを作成することは何とか可能ですか?
C++ での同等の方法は、コピー コンストラクターとコピー代入演算子を削除することです。