我想在将值传递给初始化列表之前执行预处理活动。在静态初始化列表之前预处理变量
(例如:做断言检查)
下面是一些方面我的问题:假设我有,
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