Template-Spezialisierung und Vererbung

Angenommen ich habe eine template-Klasse mit einer Menge von Funktionen, und ich möchte um sich zu spezialisieren, Sie zu ändern, nur ein paar von Ihnen und halten die anderen auf, genau so, wie angegeben in das Basis-template-Klasse.

Wie kann ich das tun?

Unten ist das, was ich erreichen will, aber die Lösung ist nicht gut, weil es nicht erlauben, mich zu finden um die Spezialisierung für int als Base<int> – ich IntSpec für, die.

#include <iostream>

using namespace std;

template<typename T>
struct Base
{
  void print1() {cout << "Base::print1" << endl;};
  void print2() {cout << "Base::print2" << endl;};
};

struct IntSpec : public Base<int>
{
  void print2() {cout << "Base<int>::print2()" << endl;};
};

int main()
{
  Base<double> d;
  //Base<int> i;  <-- I want this kind of instantiation
  IntSpec i;

  d.print1();
  d.print2();
  i.print1();
  i.print2();
}

Ausgabe:

Base::print1
Base::print2
Base::print1
Base<int>::print2()
InformationsquelleAutor Amadeus | 2013-06-12
Schreibe einen Kommentar