klasse in klasse

OP #2150447
Lesenswert?
• ▲
▼
Hallo Leute,

ich bin mir grad garnicht sicher ob die Frage die ich habe überhaupt in 
dieses Forum gehört. Aber ich stelle Sie mal trotzdem :)

Ich möchte in C++ ein Programm schreiben welches sich aus mehreren 
Hardware-Modulen zusammen setzt. Je nachdem welche parameter ich am 
Programmstart festlege soll sich das Programm aus den entsprechenden 
Hardware Modulen zusammen setzen ( beispielsweise USART+I2C oder USART + 
USB oder was auch immer).

Dazu lege ich ein Objekt an, welches aus mehreren Objekten besteht.

Das I2c-Objekt hat einen übergabe-Parameter für den constructor.


Folgender Quelltext wird anstandslos kompiliert.
1
class testklasse
2
  {
3
    private:
4

5
    public:
6
      
7
      testklasse();
8
      USARTObject USARTabc;
9
      I2cObject I2Cabc( /* 0xAA */ );  
10
  };

Der jetzt folgende Quelltext wird nihct kompiliert. Es kommen die 
Fehlermeldungen:

-expected identifier before numeric constant
und
-expected ',' or '...' before numeric constant
1
class testklasse
2
  {
3
    private:
4

5
    public:
6
      
7
      testklasse();
8
      USARTObject USARTabc;
9
      I2cObject I2Cabc( 0xAA  );  
10
  };

Mir ist ja bekannt, dass ich laut c++ spec. variablen beim anlegen in 
Objekten nihct gleich einen Wert zuweisen kann, sondern dass im 
constructor machen muss, aber gilt das auch für objekte??

Ich benutze RowleyCrossworks auf einem STM32

Für Hilfe wäre ich echt dankbar.

Grüße Tarkan
Gast #2150454
Lesenswert?
• ▲
▼
Du kannst tatsächlich nur einen Zeiger (I2cObject* I2Cabc;) da erstellen 
und dann im Konstruktor per "new" das neue Objekt erzeugen. Das musst du 
dann natürlich im Destruktor wieder freigeben...
OP #2150487
Lesenswert?
• ▲
▼
Also nach einigen herumprobieren hat sich folgende Schreibweise als 
richtig erwiesen :)
1
class testklasse
2
  {
3
    private:
4
      I2cObject I2Cabc;
5
      USARTObject USARTabc;
6
    public:
7
      testklasse();
8
  };
9

10

11

12

13
   
14
testklasse::testklasse() : I2Cabc(0xAA)
15
  {
16
    //
17
  }


zumindest lässt sich diese schreibweise anstandslos kompilieren! :)

Grüße Tarkan

PS: was mache ich wenn ich mehrere Objekte mit übergabeparameter 
innerhalb einer klasse erzeugen will ? :)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.