Atxmega: Statischer Klassenzeiger in Klasse (auf sich selbst)

Gast #4414302
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!
Persönliche Seite
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
Gast
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.
Gast
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.