Я рефакторинг класса для моего проекта для адаптации данных 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 *»?
Я думаю, что лечение 'INT *' как '' A * будет d o гораздо больший вред, как для читаемости, так и для правильности вашего кода, чем шаблоны. Если вы действительно хотите, вы можете сделать A A (42); x2 (&a); '. – jrok