Czy można zdefiniować niestandardową konwertera (converter1<T>
i converter2
) pomiędzy różnymi rodzajami surowego wskaźnik A*
i B*
,
następnie wykonać wszystkie funkcje (fa()
i fb()
) w danej klasy
użyć odpowiedniego konwertera (converter1<T>
lub converter2
)?automatyczne wywołanie niestandardowy konwerter surowych wskaźników A * <-> B *
Krótko mówiąc, chcę, aby program przekonwertował A*
na B*
i odwrotnie, KORZYSTAJĄC z moich własnych funkcji.
Chciałbym, aby zrobiło to automatycznie dla mojej wygody.
class Manager{
void fb(B* b){ /** something complex */ }
void fa(A* a){ /** different thing complex */ }
void testCase(){
A* a= ... ;
fa(a);
fb(a); //automatic convert to B* using "converter2" (wish)
B* b= ... ;
fa(b); //automatic convert to A* using "converter1" (wish)
fb(b);
}
template<class T> T* converter1(B* b){ //hardcoded, non-static.
return this->getId<T>(b);
//^^^ just an example to show how custom it is,
// currently T=A
}
B* converter2(A* a){ //hardcoded
return a->getB();
//^^^ just an example to show how custom it is.
}
}
Prawdziwa sprawa ma wiele A
- A1
, A2
, A3
i tak dalej.
A
i B
nie są od siebie nawzajem.
Szkoda, że nie ma sposobu. Myślę o konstruktorze wskaźnika.
Czy A i B pochodzą od siebie? –
Nie, nie są one powiązane z klasą. Dziękuję, zapomniałem, dodam to do pytania. – javaLover
Krótka odpowiedź: Nie, to niemożliwe. –