初期化リストに値を渡す前に、前処理アクティビティを実行したいと考えています。
(例: アサーション チェックを行うため)
ここに私の質問の文脈があります:私が持っていると仮定して、
1. class B {
2. private:
3. int b_value;
4. public:
5. B(int input_of_b) {
6. b_value = input_of_b;
7. }
8. };
と
9.
10. class A {
11. private:
12. int a_value;
13. B b_obj
14. public:
15. A(int input_value) : b_obj(input_value) {
16. //A constructor gets called after init list happens
17. }
18. };
15行目でどうなるか。初期化リストを呼び出して初期化する直前b_obj (b_value)
- input_value へ
input_value の値を操作 (チェックまたは前処理) したい ??
どうすればこれを達成できますか? Java では、初期化ブロックのようなものがあります。
私はすでに考えました-
クラス A と B の外部に関数を作成し、A のオブジェクトを作成する直前に、「input_value」で初期化して、その値を前処理します。(ただし、これは疎結合の概念に違反します)
親クラスを「Aの親」にしてクラスAにし、クラスAにそれを拡張させ、親コンストラクターが初期化リストの前に呼び出されるため、そのクラスで前処理を行いますか? 私はこれを試したことがないので、それが正しいアプローチであるかどうかはわかりません。