Mój problem przedstawia się następująco:
Potrzebna mi funkcja do pobierania jednego z dwóch wskaźników znajdujących się w klasie (tylko jeden ze wskaźników != NULL, oba są różnego typu).
Funkcja ma działać tylko dla dwóch typów ewentualnie dla innych może zwracać wskaźnik NULL. Moją alternatywą jest napisanie funkcji przyjmujących jako parametr wskaźnik danego typu i do tego wskaźnika przypisanie odpowiedzi.
Próbowałem to zrobić w następujący sposób:
template <> ConnData* getData<ConnData>(void) throw () {
return this->connData1; //klasa ConnData*
}
lub
template <ServerData T> T* getData(void) throw () {
return this->connData2; //klasa ServerData*
}
Oba sposoby nie są poprawne. Czy istnieje jakiś sposób na zrobienie tego poprawnie?
Moja klasa:
class Conn{
public:
template <typename T> T* getData(void) throw () {
return NULL;
};
template <> ConnData* getData<ConnData>(void) throw () {
return this->connData1; //klasa ConnData*
};
template <ServerData T> T* getData(void) throw () {
return this->connData2; //klasa ServerData*
};
private:
ConnData *connData1;
ServerData *connData2;
};