Ok, also ich rekapituliere:
Das ganze bringt nur etwas, wenn ich in der Basisklasse Funktionalität implementiere, und dabei von dem Typ der Abgeleiteten Klasse abhängige methoden aufrufe. Richtig?
Funktioniert also sowieso alles nur statisch.
In meinem Programm habe ich in der Basisklasse keine Funktionalität, sondern wollte nur das interface definieren. Das funktioniert aber nicht, weil das "Interface" trotzdem Typabhängig ist und somit eigentlich nicht mehr das "interface" sondern die Implementierung ist.
Oder so ^^
Naja, sieht so aus als würde das mein Problem nicht lösen.
Es ist so: mir fehlen in C++ zurzeit tierisch die "Concepts", also die Fähigkeit Ansprüche an einen Typ zu stellen, der als Template-Parameter übergeben wird.
Beispiel:
Eine Katze ist von einem Tier abgeleitet, und ein Hund ebenfalls. Allokiere ich ein Katzenobjekt, kann ich über virtuelle Tiermethoden darauf zugreifen, und dieses Objekt an alle Funktionen übergeben, die Tiere erwarten.
Eine Petunie ist kein Tier, also kann ich auch keinen Petunienzeiger an eine Tierfunktion übergeben - das "Tier" ist das Interface gegen das ich prüfe. Wenns nicht passt gibts einen Compilerfehler.
So, nun ist es bei mir so, dass ich schon zur kompilierzeit weiß, dass das Tier ne Katze ist. Ich werde mir also den virtuellen Funktionsaufruf sparen, und die Tierfunktionen als Templates implementieren, die vom Tiertyp abhängen. Gebe ich den Typ Katze in die Tierfunktion hinein, ist alles grün. Und JETZT kommt mein großes Problem, wieso ich den Zirkus veranstalten wollte:
Wenn ich ne Petunie in eine Tierfunktion übergebe, dann funktioniert das!!! Zumindest so lange, bis die Tierfunktion versucht den Blutdruck zu messen und feststellen muss, dass eine Petunie keine get()-Methode für den Blutdruck hat - und das ist viel zu spät.
Dieses Problem wäre mit Concepts gelöst worden, wurde aber (wegen grundlegender Überlegungen) vertagt. Das CRTP ding war mein kleiner Versuch etwas ähnliches nachzubauen, hat aber nicht funktioniert.
Hat jemand ne Idee, wie ich verhindere, dass sich Petunien als Tiere ausgeben?
Es geht mir übrigens nicht nur um Compilerfehler. Ich hätte gerne als "dokumentation" oder "garantie", dass ein Typ einem gewissen Konzept entspricht.
Das kann man zurzeit
im Stil der STL in der Dokumentation machen, ist aber wenig befriedigend

Haters gonna hate, potatoes gonna potate.