我正在爲我的項目重構一個類以適應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()
}
在這種情況下,也許模板是一個不錯的選擇,但我怕rewritting與模板全班將是一個巨大的努力,並會盡特別是對我的同事來說,可讀性有一點傷害。
是否有任何其他方式使用「int *」作爲「A *」?
我覺得治療'INT *'提供
operator<<
作爲一個''*將d對代碼的可讀性和正確性的危害要比模板更大。如果你真的想要你可以做'A a(42); x2(&a);'。 – jrok