問題タブ [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++ - std::move の存在下で使用されない移動セマンティクス
以下を使用します。
&& が呼び出されているのに&&の代わりにifstream::operator=(const ifstream
&が呼び出されるのはなぜですか?)
ifstream::operator=(ifstream
)
std::move()
更新:一般的に言えば、左辺値参照を右辺値参照に強制する方法はありますか?
html - ユーザーが私の Web ページからテキストをコピーまたは印刷できないようにするにはどうすればよいですか?
テキスト コンテンツを含む Web ページ (.Net プラットフォーム上、C# を使用) があり、ユーザーがテキストをコピーしたり、ドキュメントを印刷したりできないようにしたいと考えています。
ユーザーがページのコピーを取得するのに苦労している場合、私は彼ができることを知っています. しかし、私はそれをできるだけ難しくしたいと思います。
その上でいくつかのポイントを見つけました。
- Java Script を使用して、ユーザーによるテキストのコピーをブロックします。欠点は、ユーザーがソースからテキストを簡単にコピーできることです。
- ユーザーは一度に印刷できるため、テキストを 1 つの大きな画像にしないでください。
- プラグインを使用して、テキストをコピーする機能なしで、定義されたビューポート サイズでテキストをスクロール可能として表示します。次に、ユーザーは、ウィンドウのビューポートに収まるすべてのビットを印刷するのに苦労する必要がありますが、これは私にとっては問題ありません。この場合はフラッシュを使用してください。
- ソーステキストをコピーまたは表示できないionCubeの(php)ソリューションを見てきましたが、欠点は簡単に印刷できることです。ユーザーがページを印刷するのをブロックする機能とともに、ここで ASP のエンコーディング ソリューションを確認したいと思います :)
- ユーザーが scribd 文書からテキストをコピーできないようにすることを選択した場合、scribd はテキストを読みにくい画像に変換するため、解決策にはなりません。
私が知らない解決策が他にもあるかもしれません。
この場合の最善の解決策を教えてください。
c++ - 標準レイアウトとコピー不可のプロパティ
C ++ 11、§9/ 7:
標準レイアウトクラスは、次のようなクラスです。
- タイプnon-standard-layoutクラス(またはそのようなタイプの配列)または参照の非静的データメンバーはありません。
- 仮想関数も仮想基本クラスもありません。
- すべての非静的データメンバーに対して同じアクセス制御があり、
- 非標準レイアウトの基本クラスはありません。
- 最も派生したクラスに非静的データメンバーがなく、非静的データメンバーを持つ基本クラスが多くても1つないか、非静的データメンバーを持つ基本クラスがない。
- 最初の非静的データメンバーと同じタイプの基本クラスはありません。
では、標準レイアウトのクラスをコピーできないようにする方法はありますか?はいの場合、どのように?
boost :: noncopyableからプライベートに継承すると、コピーコンストラクターがプライベートになります(したがって、標準のレイアウトではないため)。boost :: noncopyableの実装は次のようになります:
プライベートセクションのため、標準のレイアウトクラスではありません。また、プライベート継承が標準のレイアウトルールに違反するかどうかも確認します。
出力は次のとおりです。
上記の例は、からプライベートに継承boost::noncopyable
すると、クラスが標準レイアウトに準拠しないように変更されることを示しています。これがg++のバグ(私はg ++ 4.6.1を使用しています)なのか、それとも標準に違反しているのかわかりません。
c++ - コピー不可能なクラスを作成し、自分のクラスに継承する
コピー不可能なクラスを作成し、それを myclass に継承しようとしています。コードは次のようになります。
delete を使用すると、delete キーワードを再利用して関数を「deleted」として定義する第 3 のメカニズムが可能になります。
これを試してみると、VS 2010 で次のようなエラーが表示されます。
コンパイラは、非仮想関数を純粋として作成しようとしていると考えています。誰かが理由を説明してもらえますか? 「削除」キーワードを削除することで、上記の問題を解決できます。
c++ - C++11 で明示的に削除されたメンバー関数を使用して、コピー不可能な基本クラスから継承する価値はありますか?
C++11 で明示的に削除されたメンバー関数を使用して、コピー不可能な基本クラスから継承する価値はありますか?
私は、プライベートまたは削除されたコピーコンストラクターとコピー割り当てを持つ基本クラスをプライベートに継承するトリックについて話している (例: boost::noncopyable
)。
この質問で提示された利点は、C++11 にも適用できますか?
C++11 でクラスをコピー不可にする方が簡単だと主張する人がいる理由がわかりません。
C++03 の場合:
C++11 の場合:
編集:
多くの人が指摘しているように、プライベート コピー コンストラクターとコピー代入演算子に空のボディ (つまり {}) を提供するのは間違いでした。最初は {} を追加しないことから始めましたが、リンカーの問題に遭遇し、ばかげた理由で {} を追加しました (状況を覚えていません)。私はよく知っている。:-)
c++ - エラー: 「クラス 'boost::signals2::scoped_connection' で宣言されたプライベート メンバーにアクセスできません」?
// .cpp
AddEventOccurredObserver
(に委任しboost::signals2::connect()
て返すことに注意してくださいboost::signals2::connection
)
次のエラーが表示されます。テンプレートのエラーを解釈するのは難しいですが、エラーはのメンバー宣言で発生しているようですstd::vector<boost::signals2::scoped_connection> boostSignalConnections_;
検索しましたが、scoped_connection がコピーできないことに関係していると思いますか? わからない。私が scoped_connection を使用している理由は、この SO の質問のためです: 多くの信号/スロットの接続/切断を boost:: signals2 で処理する
アップデート
参考までに、 から に変更scoped_connection
するconnection
と動作します: std::vector<boost::signals2::connection> boostSignalConnections_;
. 使用する私の全体的な理由scoped_connection
は、それらが破壊時に自動的に接続を切断することですが、私はそうでconnection
はないと信じています。ただし、コレクションを繰り返し処理して、それぞれを手動で切断することはできます。
c++ - OpenMP はプライベート オブジェクトをコピーしますか?
巨大なファイル (3x280 GB) を読み取り、ファイル内のデータにフィッティング手順を実行するプログラムを作成しています。このようなプログラムを並列化することは非常に便利で、OpenMP で簡単に実行できます。
私が理解していないのは、OpenMP でプライベート変数がどのように取得されるかです。誰もが知っているように、fstream のオブジェクトはコピー不可であり、直観的に、私はそれをプライベート オブジェクトとして使用できませんでした。したがって、ファイルのリーダーは共有されました。
後で問題が発生したので、fstreams を非公開にしてみようと思いました...そして何だと思いますか? 出来た!!!これはどのように可能でしょうか?! オブジェクトがコピー不可能な場合、OpenMP はカーネルごとに同じオブジェクトの異なるコピーをどのように使用できますか?
これは私のプログラムがどのように見えるかです:
ありがとうございました。
c++ - コピー不可能なクラスのトリックのようなmake_pair
make_pairは、タイプに言及せずにペアを作成できます。クラスに同じトリックを使用したいのですが、boost :: noncopyableを継承しているため、コンパイルされません。
別の方法はありますか?make_bit_writerを友達にしてみたところ、アイデアが足りなくなってしまいました。
c++ - コピー不可能な奇妙さを高める
から継承するクラスがありboost::noncopyable
ます。たとえば、ヘッダーの抜粋を次のようにします。
次に、私のソリューションのプロジェクトの1つboost::noncopyable
に、実装の詳細のプライベートメンバーがタイプAのオブジェクトへの参照であるクラス(たまたまから継承する)があります。たとえば、ヘッダーの抜粋で:
および実装の抜粋 (cpp) では:
次に、私のソリューションの別のプロジェクトでは、B から継承するクラス C を、ヘッダーの抜粋とともに使用します。
および実装の抜粋 (cpp) では:
しかし、MSVC++ 2008 でビルドしようとすると、次のエラーが発生します。
コンパイラは、set_A
B ではなく、C の機能にのみ問題がありset_A
ます。誰かがこれについて何か考えを持っていて、光を当てることができるかどうか感謝しますか? いつもご関心をお寄せいただきありがとうございます。
編集:
要約すると、ここで私が理解していないのは、なぜコンパイラがエラーに関するエラーをいつ適用するかについてうるさいのかということですboost::noncopyable
。set_A(..)
クラス Cの関数をコメント アウトすると、すべて正常にコンパイルされます。しかし、それを保持するとエラーが発生しますが、クラス B では同じ問題はありません。詳細を示すために、上記のエラー メッセージを少し編集しました。ここで、コンパイラが生成した関数について何かを述べていることに注意してください。なんらかの理由でこれがクラス C でのみ発生した可能性はありますか? なんで?
c++ - noncopyable static const member class in template class
I have a non-copyable (inherited from boost::noncopyable
) class that I use as a custom namespace. Also, I have another class, that uses previous one, as shown here:
this code leads to the next error (even without instantiation):
error: no 'const custom_namespace custom_namespace_user::custom_namespace_()' member function declared in class 'custom_namespace_user'
The next way is not legitimate:
What should I do to declare this two classes (first as noncopyable static const member class of second)? Is this feaseble?