我在构造函数中破坏了逗号运算符,以便我可以预处理参数并使用处理后的参数进行初始化。
假设我有以下基类和派生类:
class Base
{
protected:
int i;
int j;
public:
Base(int a):i(a),j(a){}
Base(int a, int b):i(a),j(b){}
};
class Derived:public Base
{
private:
int d;
void inc(int & a) {a++;}
void inc(int & a, int & b) {a++; b++;}
public:
Derived(int a, int b, int c);
};
我知道我可以使用逗号运算符来处理参数并使用它来初始化基本部分,如下所示:
Derived::Derived(int a, int b, int c):Base((inc(a),a)),d(c){}
现在如果我想预处理两个参数并使用它们来初始化基础怎么办?我做了以下事情:
Derived::Derived(int a, int b, int c):Base((inc(a,b),(a,b))),d(c){}
但这不是我想要的,因为仍然会使用单参数基本构造函数(因为(a,b)
它也是返回的逗号运算符b
)。如果逗号运算符是不可能的,有没有办法实现我想要的?