CDialog in stl vector packen schlägt fehl!
-
hier mein code:
ich habe im konstruktor meines fensters alle dialoge in den vector packen wollen:
dabei ist im header des fenster definiert:vector<CDialog> myDialogs;und in der source datei der klasse (im konstruktor)
CDialog tmpDia(valueXY); myDialogs.push_back(tmpDia);fehlermeldung kommt so:
error C2440: 'initializing' : cannot convert from 'const CDialog' to 'CDialog'
ich frag mich: wo ist hier was const???
-
Geht nicht, da CDialog die copy-constructable und copy-assignable Anforderungen der Standardbibliothek nicht erfüllt.
-
Danke, also war ich mal zur abwechslung nicht zu doof


-
Ist auch ganz gut so, das das nicht geht.
Sonst hättest du ja 2 Variablen, die auf das selbe Fenster verweisen,
eine davon ist evtl. sogar noch Temporär.Als lösungsmöglichkeit bietet sich dies an:
vector<CDialog*> dlgvec; dlgvec.push_back(new CMyDialog());Devil
-
ja so mach ich das ja derzeit auch, problem:
die freigabe des vectors! da ich die dialoge als tabs in einem anderen dialog habe (reiter), kann ich den im destructor nicht einfach frei geben: gibt ne exception -- wahrscheinlich hat das parent noch ein paar handles registriert... kann man das abfangen? (tstHandleMem(..)??)
-
Gehirnmann! schrieb:
ja so mach ich das ja derzeit auch, problem:
die freigabe des vectors! da ich die dialoge als tabs in einem anderen dialog habe (reiter), kann ich den im destructor nicht einfach frei geben: gibt ne exception -- wahrscheinlich hat das parent noch ein paar handles registriert... kann man das abfangen? (tstHandleMem(..)??)Die Klasse für das TabCtrl sollte dann die Pointer halten und
auch zerstören, somit erübrigt sich das Problem...Devil