我想在將值傳遞給初始化列表之前執行預處理活動。在靜態初始化列表之前預處理變量
(例如:做斷言檢查)
下面是一些方面我的問題:假設我有,
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,以及之前創建的對象,並以「將input_value」,預處理該值初始化。 (然而,這違反了鬆耦合的概念)
爲類A做一個父類「A的父類」,讓類A擴展它,在該類中做預處理,因爲在初始化列表之前調用父構造函數?我沒有嘗試過,我不確定這是否是正確的方法。
您可能有一個staitic成員函數int preprocess(int)並通過b_obj(預處理(輸入))初始化 –
聽起來像它應該是'B'的責任來保持該int的正確值。那麼爲什麼不在B的構造函數中做呢? – jrok
@jrok,這可能不總是可能的,特別是如果它是庫的一部分,例如 – gldraphael