Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C++] Anfängerproblem mit Klassen (Zeigern?) (https://www.delphipraxis.net/64111-%5Bc-%5D-anfaengerproblem-mit-klassen-zeigern.html)

Rastaman 27. Feb 2006 17:35


[C++] Anfängerproblem mit Klassen (Zeigern?)
 
Hallo. Fang grad mit C++ an (mit BDS 2006 Trial) und hät da mal ne Frage:

Folgender Code:

Code:
class Klasse
{
    public:
        char* Caption;
};

Klasse *Klasse1;

int main(void)
{
    Klasse1->Caption = "blub";
    return 0;
}
Fragen:
1. Beim Ausführen kommt der Fehler "Zugriffsverletzung"
2. Wenn ich den Zeiger lokel in main pflanze, dann funktioniert es.
3. Kann das daran liegen dass ich das mit den Zeigern noch nicht wirklich verstanden habe?
Zeigt *Klasse1 jetzt einfach auf eine neue Instanz von Klasse?
Ich habs einfach mal kurz so gemacht wie in der VCL (TForm1 *Form1)
Sorry aber die Zeigertutorials sind alle n bischn schwer verständlich und n Buch wollt ich mir nicht extra kaufen.
4. Ist die Codeformatierung der Klasse richtig? Bezweifele ich nämlich ...

Danke schonmal!

//Edit: Titel geändert.

sniper_w 27. Feb 2006 17:41

Re: [C++] Anfängerproblem mit Klassen (Zeigern?)
 
Zitat:

Fragen:
1. Beim Ausführen kommt der Fehler "Zugriffsverletzung"
2. Wenn ich den Zeiger lokel in main pflanze, dann funktioniert es.
3. Kann das daran liegen dass ich das mit den Zeigern noch nicht wirklich verstanden habe?
Zeigt *Klasse1 jetzt einfach auf eine neue Instanz von Klasse?
Ich habs einfach mal kurz so gemacht wie in der VCL (TForm1 *Form1)
Sorry aber die Zeigertutorials sind alle n bischn schwer verständlich und n Buch wollt ich mir nicht extra kaufen.
4. Ist die Codeformatierung der Klasse richtig? Bezweifele ich nämlich ...
1. Klasse muss auf "erzeugt" werden :-> MeineInstanz = new KlassenTyp;
2. Sollte eigentlich nicht, es sei denn, du hast es nicht als Pointer To Class deklariert.

Rastaman 27. Feb 2006 17:52

Re: [C++] Anfängerproblem mit Klassen (Zeigern?)
 
Zitat:

Zitat von sniper_w
1. Klasse muss auf "erzeugt" werden :-> MeineInstanz = new KlassenTyp;

Danke!
Also so?

Code:
class Klasse
{
    public:
        char* Caption;
};

Klasse *Klasse1;

int main(void)
{
   Klasse1 = new Klasse;
   Klasse1->Caption = "blub";
   delete Klasse1;
   return 0;
}
Das funktioniert.
Aber wieso muss ich die Instanz nicht erzeugen wenn ich *Klasse1 lokal deklariere?

Und was ist der Unterschied zwischen

Code:
Klasse *Klasse1;
//und
Klasse* Klasse1; //?
Glaube neuer Thread lohnt sich dafür nicht.

Chewie 27. Feb 2006 18:08

Re: [C++] Anfängerproblem mit Klassen (Zeigern?)
 
Zitat:

Zitat von Rastaman
Aber wieso muss ich die Instanz nicht erzeugen wenn ich *Klasse1 lokal deklariere?

Das musst du schon, du hattest wohl einfach nur Glück (Speicherzugriffsfehler sind meist nichtdeterministisch).

Zitat:

Zitat von Rastaman
Und was ist der Unterschied zwischen

Code:
Klasse *Klasse1;
//und
Klasse* Klasse1; //?

Einige schreibens lieber so, andere lieber so. Für den Compiler macht das aber keinen Unterschied.

Rastaman 2. Mär 2006 14:22

Re: [C++] Anfängerproblem mit Klassen (Zeigern?)
 
Cool danke klappt, dadurch wird gleich alles viel logischer wenn man weiß, dass es egal ist auf welcher Seite der Stern steht :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz