Forum: Mikrocontroller und Digitale Elektronik Klassen Template


von Meik J. (tidemic)


Lesenswert?

Sehr geehrte Community,
ich möchte eine Spezialisierung von einem Klassen Template.
Diese Spezialisierte Klasse enthält auch eine Spezialisierte
Methode mit anderem Rückgabe Typ aber gleichen Namen.
Wo liegt mein Fehler? Vielen Dank im voraus.

//Standart Template
template<typename T>
class mycontainer
{
  private:
  T Value;
  public:
  bool methode();
 };

//Spezial Klasse
template<>
class mycontainer<const char*>
{
  private:
  const char* Value;
  public:
  void methode();
};
//Standart Methode
template<typename T>
bool mycontainer<T>::methode()
{
  return true;
}
//Und das soll die Methode fuer die Spezial Klasse sein!
template<>
void mycontainer<const char*>::methode()
{
}

Arduino IDE Meldung:
Arduino: 1.6.4 (Windows 7), Platine: "Arduino Uno"

In file included from sketch_jun21b.ino:1:0:
Forum.h:29:6: error: template-id 'methode<>' for 'void mycontainer<const 
char*>::methode()' does not match any template declaration
 void mycontainer<const char*>::methode()
      ^
Fehler beim Kompilieren.

  Dieser Report hätte mehr Informationen mit
  "Ausführliche Ausgabe während der Kompilierung"
  aktiviert in Datei > Einstellungen

von Bastler (Gast)


Lesenswert?

Spezialisieren kann man eben nur die Implementierung, aber nicht das 
"Interface". Die Klassen-Vorlage sagt "methode() liefert bool". Soll das 
nicht mehr gelten, dann "hat man eine andere Vorlage".

von Sebastian V. (sebi_s)


Lesenswert?

Meik Juenke schrieb:
> //Und das soll die Methode fuer die Spezial Klasse sein!
> template<>
> void mycontainer<const char*>::methode()
> {
> }

Das template<> muss weg. Dann geht es.

von Meik J. (tidemic)


Lesenswert?

Danke Sebastian,
der Compiler mecker schon mal nicht mehr.
Zum vollständigen Testen werde ich wohl heute nicht
mehr kommen.
Euch ein schönen Sonntag!
MfG

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.