Klasse einbinden - !
-
@manni66 Ups, bin bereits ein wenig verwirrt. So viele unterschiedliche Fragen...
-
@torsten_156 sagte in Klasse einbinden - !:
@Schlangenmensch sagte in Klasse einbinden - !:
@torsten_156 und was liefer
newzurück?eine neue Instanz auf das Objekt Reader...
Es erstellt eine neue Instanz, aber was liefert es zurück? Hinweis: Es könnte mit einer vorherigen Frage zusammenhängen bezüglich dem Unterschied zwischen
ReaderundReader*
-
@Dravere Es liefert einen Zeiger auf den Datentyp
Readerzurück. Dabei wird auch der benötigten Speicher reserviert. Dieser muss nach Beendigung dann mit delete wieder freigegeben werden. Soweit richtig?Gruß
Torsten
-
@torsten_156 sagte in Klasse einbinden - !:
@Dravere Es liefert einen Zeiger auf den Datentyp
Readerzurück. Dabei wird auch der benötigten Speicher reserviert. Dieser muss nach Beendigung dann mit delete wieder freigegeben werden. Soweit richtig?Soweit richtig. Nun denk noch einmal scharf nach, wieso manni66 wohl folgendes sagte:
@manni66 sagte in Klasse einbinden - !:
@torsten_156 sagte in Klasse einbinden - !:
Reader myReader = new Reader();
Der Unterschied zwieschen
ReaderundReader*ist dir klar?Da hat er bestimmt einen Grund für gehabt.
Über den von manni66 angesprochenen syntaktischen Fehler hinaus, sollte man noch unbedingt erwähnen, dass man in C++ ohnehin niemals
newim Anwendungscode benutzt. Das würde ich fast schon als krassen Fehler bezeichnen. Zu viel Java gemacht?
-
@torsten_156 sagte in Klasse einbinden - !:
@Th69 Ja diese meine ich. Der
MultiBarcodeReaderhört sich ja gut an. Aber wie binde ich diesen in mein Projekt ein???Du bist wahrscheinlich durch die VCL daran gewöhnt, Objektinstanzen per
newanzulegen, aber der Standard ist die direkte Erstellung eines Objekts (auf dem Stack):MultipleBarcodeReader multipleBarcodeReader;s.a. cli/src/main.cpp (auch wenn hier ein
GenericMultipleBarcodeReaderangelegt wird)
-
@SeppJ
Nö, vermutlich zuviel Embarcadero VCL Scheiß gemacht. Deren Framework erfordert, dass alles, was vonTObjecterbt, auf dem Heap angelegt werden muss. Ausnahmslos. Um das weiter zu erschweren funktionieren auchmake_sharedundmake_uniquenicht mit dem VCL Framework zusammen, da bleibt nur noch die Konstruktion übernew.
-
@DocShoe sagte in Klasse einbinden - !:
@SeppJ
Nö, vermutlich zuviel Embarcadero VCL Scheiß gemacht. Deren Framework erfordert, dass alles, was vonTObjecterbt, auf dem Heap angelegt werden muss. Ausnahmslos. Um das weiter zu erschweren funktionieren auchmake_sharedundmake_uniquenicht mit dem VCL Framework zusammen, da bleibt nur noch die Konstruktion übernew.
Leute wissen davon und benutzen das trotzdem?
-
Ist ja bei Qt nicht anders, alle visuellen Elemente werden als Childobjekte einem Parent zugewiesen und bei Zerstörung des Parents werden automatisch alle Unterelemente (rekursiv) per
deleteentfernt.
-
@SeppJ
Ich könnte mich jetzt lange über den Mist auskotzen, aber ich belasse es mal bei der Kurzfassung:
Wenn du (aktuell am 19.09.2019) €2628,90 für die Suite ausgegeben hast und dann beim ersten Projekt feststellst, dass das halt so ist, dann findet man sich damit ab.
-
@Th69 Durchaus grausam
Versuche mir da nichts falsches anzugewöhnen ... auf der anderen Seite hat es mir aber auch geholfen, mich nicht vor pointern zu fürchten 
-
@Th69
Bei GUI Elementen kann ich das noch verstehen, aber es gibt keinen, aber auch wirklich gar keinen Grund, warum eineTStringList(eine Artstd::vectorfür Strings) auf dem Heap erzeugt werden muss.
-
Wären diese VCL-Komponenten nicht alle von
TObjectabgeleitet, könnte man keinen Code zwischen C++ und Delphi austauschen (also in einem gemeinsamen Projekt verwenden). Einzig wohl die KlassenAnsiStringundUnicodeStringwurden für C++ neu implementiert (und können daher direkt ohnenewbenutzt werden).