Forum: Mikrocontroller und Digitale Elektronik Atxmega: Statischer Klassenzeiger in Klasse (auf sich selbst)


von Jens (Gast)


Lesenswert?

Hallo,

ich habe in meiner Klasse einen Zeiger auf eine Klasse des selben Typs 
deklariert, kann diesem aber nichts zuweisen mit der Fehlermeldung 
"undefined reference to".

Ich verwende AVR Studio 7.
1
class TestKlasse{
2
  public:
3
    static TestKlasse * pC1;
4
    Testklasse();
5
};
6
7
Testklasse::Testklasse(){
8
  Testklasse::pC1 = this;
9
}

Kann mir hier jemand weiterhelfen :)? Danke!

von Heiko L. (drcaveman)


Lesenswert?

Einmal schreibst du "Testklasse" und einmal "TestKlasse".

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Jens schrieb:
> Kann mir hier jemand weiterhelfen :)? Danke!

das ist tricky ... in c++ muss man die statische variable einer klasse 
nochmal außerhalb der klasse definieren ...

irgendwas mit hmm ...
1
class TestKlasse{
2
  public:
3
    static TestKlasse * pC1;
4
    Testklasse();
5
};
6
7
Testklasse* TestKlasse::pC1;
8
9
Testklasse::Testklasse(){
10
  Testklasse::pC1 = this;
11
}

oder so ähnlich

von Kirsch (Gast)


Lesenswert?

Statische Attribute einer Klasse müssen außerhalb der klasse einmal 
inistalisiert werden

1
class Klasse{
2
static int foobar;
3
}
4
Klasse::boobar = 42;

In deinem Fall must du den Pointer auf NULL setzen.

von Jens (Gast)


Lesenswert?

Heiko L. schrieb:
> Einmal schreibst du "Testklasse" und einmal "TestKlasse".

Tut mir leid, das Beispiel habe ich schnell runtergeschrieben, zur 
Veranschaulichung meines Problems, denn:

Mampf F. schrieb:
> Jens schrieb:
>> Kann mir hier jemand weiterhelfen :)? Danke!
>
> das ist tricky ... in c++ muss man die statische variable einer klasse
> nochmal außerhalb der klasse definieren ...
>
> irgendwas mit hmm ...
> class TestKlasse{
>   public:
>     static TestKlasse * pC1;
>     Testklasse();
> };
>
> Testklasse* TestKlasse::pC1;
>
> Testklasse::Testklasse(){
>   Testklasse::pC1 = this;
> }
>
> oder so ähnlich

War die Lösung!

von Jens (Gast)


Lesenswert?

Danke natürlich ;).

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
Noch kein Account? Hier anmelden.