Dziedzicząca klasa template'owa i specjalizacja metod dziedziczonych

0

Witam,

Napotkałem ostatnio na taki przypadek: mam interfejs z którego dziedziczę. Klasa która dziedziczy jest klasą szablonową. Chciałem wyspecjalizować pewne metody z tej klasy, które są odziedziczone z interfejsu. Wszystko ładnie, pięknie tylko nie działa :). Przykład:

class IInterface 
{
public:
  virtual bool Check(const char* str) = 0;
};

template<class T>
class A : public IInterface
{
public:
  virtual bool Check(const char* str) { return false; } //1
};

i specjalizacja:

bool A<int>::Check(const char* str) { return true; } //2

Dla obiektu A<int> nie wywolywala się metoda 2, tylko 1. Koniec końców zrobiłem to inaczej, ale zastanawiam się czy jest możliwe (i jak) zrobienie czegoś takiego ?

Pozdrawiam,
klajter

0

Po pierwsze siemka - to mój pierwszy post na tym forum :).
Teraz do rzeczy: specjalizację metody wirtualnej dokonujesz na kolejnym poziomie hierarchii - tzn: gdybyś napisał klasę B dziedzicząca z A to tam dokonujesz specjalizacji.
Jeżeli jestem w błędzie to proszę o poprawienie, ale wydaje mi się, że to właśnie tak działa :)

2
template<>
bool A<int>::Check(const char* str) { return true; } //2
0

http://ideone.com/4ts3DJ

jeżeli chcesz coś wyspecjalizować to musi to być templatkom

http://stackoverflow.com/questions/1416345/c-template-specialization

edit: albo jak @Satirev postnął

1 użytkowników online, w tym zalogowanych: 0, gości: 1