template problem
-
Hallo C++ Community,
ich habe eine Klasse TempSensor, diese ist vererbt von QLabel..
Jetzt versuche ich mein erstelles Objekt von DragTab (erbt von QTabWidget) in einer QMap zu abzulegen.QMap<QString, DragTab<QLabel>* > mapTabs;
mapTabs["Analog"] = new DragTab<TempSensor>("Analog", objInputTabWidget);Doch ich bekomme diesen Compilerfehler:
d:\...\Designer.cpp(17): error C2440: '=': 'DragTab<T> *' kann nicht in 'DragTab<T> ' konvertiert werden
with
[
T=TempSensor
]
and
[
T=QLabel
]Ich hab schon alles mögliche probiert was mir eingefallen ist, doch irgendwie komm ich nicht drauf...
MFG
TheHam
-
Die Begründung wurde im Grunde schon in http://c-plusplus.net/forum/viewtopic-var-t-is-186582.html geliefert - DragTab<T1> und DragTab<T2> sind völlig unabhängige Objekte, selbst wenn T1 und T2 verwandt sind. Du kannst z.B. eine allgemeine Klasse DragTab (als Ableitung von QTabWidget und als Basis von DragTab<T>) erstellen, die Du in die Map packst.
-
Sorry... aber irgendwie versteh ich nicht ganz was du meinst
-
DragTab<QLabel> und DragTab<TempSensor> sind zwei unabhängige Klassen, die nicht miteinander verwandt sind, auch wenn TempSensor von QLabel abgeleitet ist. Deshalb kannst Du einen Zeiger auf DragTab<TempSensor> nicht in einen Zeiger auf DragTab<QLabel> umwandeln.
-
D.h. ich mach etz ne Klasse Dragtab, die erbt von QTabWidget und eine DragTab<T> die von DragTab erbt?
-
Das wäre eine Möglichkeit, um alle DragTab<T> (die ja alle von DragTab erben) gemeinsam in einem Container lagern zu können. Ob das sinnvoll ist hängt natürlich vom genauen Zweck ab (und den kenne ich nicht
).