Forum: Compiler & IDEs C++ Array von Objekten im Konstruktor initialisieren


von Johannes S. (Gast)


Lesenswert?

Ich habe ein ein Array von Objekten ohne Defaultkonstruktor. Wenn ich 
dieses jetzt als Member einer Klasse verwende muss die Initialisierung 
ja in den Konstruktor rein, aber da meckert der Compiler. Wie geht das 
richtig?
1
class Keyboard {
2
public:
3
  Keyboard();
4
5
private:
6
  DigitalIn  btnOk;
7
  DigitalIn  btn[12];
8
};
9
10
Keyboard::Keyboard() :
11
  btnOk(P0_8),  // ok
12
  btn[0](P0_8), // error: expected unqualified-id before '[' token
13
  btn[1](P0_5)
14
{
15
}

von Dr. Sommer (Gast)


Lesenswert?

1
Keyboard::Keyboard() :
2
  btnOk(P0_8),  // ok
3
  btn { P0_8, P0_5 }
4
{
5
}

Beitrag #5167908 wurde vom Autor gelöscht.
von Johannes S. (Gast)


Lesenswert?

danke, klappt.

von Dr. Sommer (Gast)


Lesenswert?

Bitte, gern ;-)

von Johannes S. (Gast)


Lesenswert?

Der Compiler hat nur als Warning angemerkt das die extended initializer 
minimum C++11 ist, hat es aber trotzdem übersetzt.

von Dr. Sommer (Gast)


Lesenswert?

Johannes S. schrieb:
> Der Compiler hat nur als Warning angemerkt das die extended
> initializer
> minimum C++11 ist, hat es aber trotzdem übersetzt.
Wenn du dem Compiler -std=c++11 übergibst, verschwindet die Warnung und 
du erhältst noch diverses weitere praktische C++11-Funktionalität, oder 
gleich -std=c++14 für die aktuelle C++-Version.

von Johannes S. (Gast)


Lesenswert?

Ich habe jetzt C++11 eingestellt, der interessante Nebeneffekt ist: die 
generierte Codesize ist von 9400 auf 8744 Bytes geschrumpft!

von Dr. Sommer (Gast)


Lesenswert?

Kann sein dass da einiges mit Initialisierung und constant expressions, 
auch bei verwendeten libs, optimiert wird. C++11 bietet da einige gute 
Möglichkeiten, wie man seine Programme verbessern kann

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.