我正在为我的项目重构一个类以适应 int 数据。代码比较复杂,下面举个简单的例子:
struct A {
A(int a):a_(a) {} // Supports implicit conversion from int
int a_;
};
void print(A a) { cout<<a.a_<<endl; }
void x2(A *a) { // change a's value
a->a_ *= 2;
}
int main() {
int b = 2;
print(b); // pass int as A without any problem
x2(&b); // pass int* as A* - failed
cout<<b<<endl; // b is supposed to changed by x2()
}
在这种情况下,模板可能是一个不错的选择,但我担心用模板重写整个类将是一项巨大的工作,并且会对可读性造成一点损害,尤其是对我的同事而言。
有没有其他方法可以将“int*”用作“A*”?