Hi. Ich bin gerade dabei, dass ich eine Ansteuerung für eine Compact Flash schreibe und dazu ein FAT32 Filesystem. Ich hab mich entschieden alles mit Klassen aufzubauen (aufgrund der Kapselung und so weiter). Das Ganze lässt sich auch ohne weiteres compilieren. In den Klassen ist jeweils ein Konstruktor drinnen. Mache ich eine Instanz von der Klasse, dann wird der Konstruktor auch aufgerufen. z.B. CompactFlash cf; Mache ich eine Instanz jedoch als Pointer, wird der Konstruktor nicht aufgerufen. Kennt jemand dieses Problem?? z.B. CompactFlash *cf; cf = (CompactFlash *)malloc(sizeof(CompactFlash)); mfg Andreas
versuch es mal mit cf = new CompactFlash; so hats bei mir bei windowsprogramme immer funktioniert.
Das Problem dabei ist nur, dass es kein "new" (auch ein "delete") für den avr-g++ gibt. Man kann Speicher also nur mit malloc anfordern. Und ich will unbedingt die Variable mit "malloc" initialisieren, da der Speicher, der angefordert wird, im externen RAM liegt. Sonst werden mir meine internen 1kByte SRAM zu wenig. Gibts vielleicht so ne Art Preprozessor Anweisung, mit der ich die Variable ohne malloc initialisieren kann und die Variable trotzdem im Heap - also im externen RAM - abgelegt wird????? Andreas
Wir suchen eigentlich schon lange jemanden, der sich um die C++ Geschichten in der avr-libc kümmern kann (bzw. den Grundstock für eine avr-libc++ damit bildet). Ein Wrapper um malloc()/free() für new/delete kann so schwer nicht sein, es bedarf einfach nur mal eines Entwicklers, der sich der Sache annimmt. Ich würde diese Variante an Deiner Stelle jedenfalls irgendwelchen Casting-Hacks allemal vorziehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.