1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
898
898
EMPFEHLEN
-
Moin,
folgendes Problem:
Eine Klasse A wird beliebig oft vererbt (an B, C, und D ... ) soll aber diese Klassen nicht kennen müssen, dies wäre extrem umständlich.
In Klasse A soll es nun eine statische Liste geben, in die jede Subklasse beim Start ihren Senf einträgt (zum Besipiel ein QAction dass beim Aufruf ein Fentser (A erbt von QWidget) aus der jeweiligen Klasse öffnet).
Ist auch egal, es soll jedenfalls etwa so ausseheen, dass es eine virtuelle Methode in jeder Klasse gibt "register", A beim Start einmal für jede Subklasse "register" ausführt und somit die Liste in A gefüllt wird.
Ich meine NICHT, dass jede Klasse im Konstruktor ihren Teil in die Liste schreibt; das kann ich selber
da wäre ja das Problem dass ich von jeder Subklasse erst ein Objekt erstellen müsste.
Gibt es da in Qt 4.5 irgendeine Variante das zu tun?
Vielen Dank fürs Lesen und Denken!
mfg,
Orbit
-
Geändert von Matthias Reitinger (03.08.09 um 17:55 Uhr)
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Also ich stelle es mir so vor dass die Klasse A eine Methode anbietet die alle anderen Klassen lädt; also quasi beim Programmstart oder auch später aber auf jeden Fall bevor von jeder Subklasse ne Instanz erzeugt wurde; die Liste ist unabhängiog von Objekten und enthält nur Klasseninformationen.
Der Senf könnte zB so aussehen dass in der Liste hinterher jede Subklasse von A einen QString oder eben ne QAction da eingefügt hat; aber eben Klassenabhängig!
und halt so dass man aus main() die Methode A::loadSubClasses aufrufen kann.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class A:public QWidget{ ... static void loadSubClasses(); virtual void register(); static QList<QString> classNames; } A::classNames = new QList<QString>; class B : public A { void register(); } void B::register(){ classNames<<"name der klasse B"; } ..
LG Orbit
-
Meinst du das vielleicht so?
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#include <iostream> #include <string> #include <vector> class A { public: static void PrintSubclasses() { std::vector<std::string>::const_iterator it = classNames().begin(); for (; it != classNames().end(); ++it) { std::cout << *it << std::endl; } } protected: static std::vector<std::string> &classNames() { static std::vector<std::string> *inst = new std::vector<std::string>(); return *inst; } }; template<typename T> class CallRegisterOnInit { public: CallRegisterOnInit() { T::Register(); } }; class B : public A { public: static void Register() { classNames().push_back("Klasse B"); } }; static CallRegisterOnInit<B> __call_register_on_init_B; class C : public A { public: static void Register() { classNames().push_back("Klasse C"); } }; static CallRegisterOnInit<C> __call_register_on_init_C; int main(void) { A::printSubClasses(); return 0; }
Grüße, Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Super danke:-P
Ähnliche Themen
-
JSF 2.0 - PostConstructs werden sinnlos aufgerufen
Von NeuerUser im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 28.08.10, 12:22 -
Spring & AspectJ:Methode wird nicht aufgerufen
Von pizza1234 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 18Letzter Beitrag: 12.05.09, 18:21 -
JPanel vs. Aufruf statischer Methode
Von Pius Hermit im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 7Letzter Beitrag: 02.10.07, 15:58 -
jsf: set-Methode wird nie aufgerufen
Von schaefli im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 19.03.07, 00:54 -
Seite kann nicht aufgerufen werden
Von uni im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 21.01.03, 21:41





Zitieren


Login






