問題タブ [data-members]
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++ - メイン関数でクラスメンバー関数のデータメンバーにアクセスする方法は?
XX.ヘッダー
XX.CPP
メイン.CPP
AA の値を main 関数で使用したい。
クラス定義とメンバー関数定義を含むヘッダー ファイルがあり、いくつかのパブリック データ メンバーが言うとします。
ああ。
現在、ヘッダー ファイルの cpp ファイルには、ヘッダー ファイルの完全な説明と、クラス内の関数定義が含まれています。データメンバー
AA
メンバー関数内に何らかの値が含まれています。今私はこのデータメンバーAAを使いたい
メイン関数で。どうやってやるの。今、私は public: int AA で intialized したばかりで、関数では、格納されている整数値を与えています。このAAをメイン関数で使用したいと思います。
c++ - セッターがプライベートでゲッターがパブリックになるようにデータをカプセル化する
「セッター」がプライベートで「ゲッター」がパブリックであるC ++でデータエンティティを作成するのが最善の方法だと思っていました。つまり、エンティティの作成者はデータを設定できる必要がありますが、ユーザー/消費者/クライアントはデータを取得することしかできません。
エンティティ EntityX を考えてみましょう:
そして、エンティティを作成してクライアントに返すクラス メソッド:
これにより、セッターがプライベートになり、ゲッターがパブリックになりますが、データメンバーが5〜10を超える場合、この例は実用的ではありません...セッターが「プライベート」であり、 「ゲッター」は「パブリック」であり、コンストラクターにすべてのデータメンバー変数を取り込ませません。
前もって感謝します
c++ - 非静的データ メンバー初期化子 C++
なぜこれが機能しないのかわかりません。
c++ - boost::thread データ メンバーを持つクラスのサブクラスを使用する際のエラー
次のクラスを作成しました
そしてサブクラス
そして主に、それぞれのオブジェクトを作成しようとします
Messaging オブジェクトを作成できるのに、SportMessaging オブジェクトが失敗するのはなぜですか?
私は周りを見回して、boost::thread に似たプライベート コピー コンストラクターを持つ boost::thread_group (クラスでの boost::thread_group の使用に関する stackoverflow の投稿) に関連しているのではないかと疑っています。
ただし、両方のように見え、そのコピー コンストラクMessaging("sports message 3")
ターSportMessaging("another sports message",4)
を呼び出してから、各非静的メンバーのコピー コンストラクターを呼び出します (つまり、boost::thread のコピー コンストラクターを呼び出そうとすることを含みます)。最後の文の考え方は、「SportMessaging anotherSportMessagingObject = SportMessaging("another sports message",4);」という事実と矛盾します。は動作せず、'Messaging aMessObj = Messaging("sports message 3");` は動作します。
python - 新しい時計オブジェクトの開始時刻を追跡するにはどうすればよいですか?
プログラム内のイベントの時間を測定し、実行時間、開始時間、停止時間など、さまざまな時間を報告するために使用できる時計オブジェクトを作成しています。プログラム全体で使用されるクロックのさまざまなインスタンスを追跡し、すべてのクロックの詳細を印刷出力に要約するclocksオブジェクトも作成しました。
時計オブジェクトは機能していますが、現在の実装で開始時刻を追跡する方法がわかりません。これは、内部アキュムレータに時間を正しく追加するために、開始時間の内部記録をリセットするためです。物事を機能させるためのガイダンスをいただければ幸いです。
コードは以下のとおりです。私が達成しようとしていることを明確にし、提案された解決策が主要な機能を削除しないように、クロックオブジェクトなどにコードを含めました(他の方法を知っている限り最小限にしました)。
実行時の出力例は次のとおりです。
問題を説明する重要な行は次のとおりですclock beta start time: none
。その時点でクロック「ベータ」が報告されているはず2014-12-28T060945Z
です。
c++ - 参照または生のポインターを含むクラスの安全な使用を強制する
次のようなクラスがあるとします。
このクラスは、少なくとも 1 つの他のエンティティがlo_
参照するオブジェクトの所有権を持っている場合にのみ適切な使用ができるように設計されています。クライアント コードでクラスが適切に使用されている場合、 が のDoStuffWithRef
所有権を持つ必要はありませんLargeObject
。
クラスが誤用されている場合、この使用法を強制したり、エラーを通知したりする方法はありますか? の使用目的を文書化する以外に何かできることはありDoStuffWithRef
ますか?
たとえば、自動的に保存されDoStuffWithRef
た は、自動的に保存された を参照する場合がありますLargeObject
。
これは私が念頭に置いている主な使用法ですが、他の誰かが所有権を持つことが保証されている可能性がある他のケースもあります。
DoStuffWithRef
問題は、クライアント コードがダングリング リファレンスで終わるインスタンスを作成する可能性が非常に高いことです。LargeObject
が参照するの所有者が他にいない場合、 がにアクセスしようとするとDoStuffWithRef
混乱が生じます。さらに悪いことに、エラーが発生してからしばらくして混乱が生じる可能性があります。DoStuffWithRef
LargeObject
これが過去に出てきたとき、私はboost::shared_ptr<>
参照の代わりに a を使用しました (これは C++03 でした)。それは、クラスのセマンティクスを適切に表現していません。前提は、DoStuffWithRef
所有権を必要としないということです。それは、他の人が所有するオブジェクトに作用することを意図しており、他の誰もオブジェクトを所有していない場合、によって提供される機能はDoStuffWithRef
意味がありません。に所有権を与えるDoStuffWithRef
と、不要なオーバーヘッドが発生し、共有所有権のセマンティクスが強制されます。weak_ptr<>
ポインターが有効かどうかを実行時に確認するべきではないため、セマンティクスも間違っています。
コードのパフォーマンスに敏感なセクションや、所有権の共有が大きな負担になるケースでこのシナリオが発生したことは一度もないので、実際には問題にはなりませんでしたが、これを C++ で正確に表現する方法を知っていればよかったと思います。費用はわずかですが、不必要でもあります。さらに重要なshared_ptr<>
ことは、クラスの誤った使用を隠すことです。を使用するDoStuffWithRef
ように変更されたshared_ptr<>
が の残りの唯一の所有者であるLargeObject
場合、ダングリング リファレンスは短期的に回避されますが、クライアント コードは未知の領域に行き着きます。