Template-Funktion: Typ-Parameter T soll Ableitung von X sein
Verfasst: So Jan 13, 2013 1:53 pm
Hi,
ich suche eine Möglichkeit zu erzwingen, dass einen Template-Parameter von einem Typ X abgeleitet ist. Beispiel (über den Sinn lässt sich streiten ^^):
Die Überlegung template <class T: Base> zu schreiben, mag g++ syntaktisch nicht.
Klar erzwinge ich zur Compilerzeit, dass die Aufrufe der Funktion mit einem Typ erfolgen, der die Funktion void foo(int) hat, allerdings ist mir das noch etwas wenig.
Die generische Programmierung habe ich in Java kennengelernt. Ist das was ich machen will in C++ sinnvoll bzw. möglich?
Ich hoffe ich habe verständlich genug geschrieben was ich meine
Schönen Sonntag
LG Glocke
ich suche eine Möglichkeit zu erzwingen, dass einen Template-Parameter von einem Typ X abgeleitet ist. Beispiel (über den Sinn lässt sich streiten ^^):
Code: Alles auswählen
#include <iostream>
struct Base {
void foo(int val) {}
};
struct Special: public Base {
void foo(int val) {
std::cout << "Special: " << val << std::endl;
}
};
struct Foo: public Base {
void foo(int val) {
std::cout << "Foo: " << val << std::endl;
}
};
template <class T> T create(int val) {
T tmp;
tmp.foo(val);
return tmp;
}
int main() {
Special s = create<Special>(5);
Foo f = create<Foo>(5);
//int i = create<int>(5); <-- so etwas soll nicht gehen dürfen
}
Klar erzwinge ich zur Compilerzeit, dass die Aufrufe der Funktion mit einem Typ erfolgen, der die Funktion void foo(int) hat, allerdings ist mir das noch etwas wenig.
Die generische Programmierung habe ich in Java kennengelernt. Ist das was ich machen will in C++ sinnvoll bzw. möglich?
Ich hoffe ich habe verständlich genug geschrieben was ich meine

Schönen Sonntag

LG Glocke