Forum: PC-Programmierung C++ Konstante


von Erwin (Gast)


Lesenswert?

Hallo

Unten habe ich in einer Klasse ein Array von Pointer auf den Typ I_B.
Das Array soll eine Größe von 3 haben.

Wenn ich die 3 in die [] Klammern schreibe, dann meckert der Compiler 
nicht. Auch in Variante 1 und Variante 3 wird nichts vom Compiler 
beanstandet.
Variante 2 mag der Compiler nicht.
Was passt bei Variante 2 nicht?

Wie sollte ich das richtiger Weise machen?

1
//const int max = 3;  // Variante 3
2
3
4
class A : public I_B
5
{
6
7
private:
8
9
  enum a {max = 3};     // Variante 1
10
  //const int max = 3;  // Variante 2
11
  I_B *Observer[max] = { nullptr, nullptr, nullptr };
12
13
// weiterer Code
14
};

von Peter II (Gast)


Lesenswert?

Erwin schrieb:
> Wie sollte ich das richtiger Weise machen?

lass sie doch einfach weg, der Compiler kann selber zählen.
1
I_B *Observer[] = { nullptr, nullptr, nullptr };

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Erwin schrieb:

> Was passt bei Variante 2 nicht?

max ist in dem Fall eine constante Variable, mit Initialisierung. 
Theoretisch könntest Du max auch im c'tor initialisieren und jeweils 
einen anderen Wert geben. Wenn max eine Eigenschaft der Klasse sein 
soll, dann sollte max `static` sein und mit `constexpr` sollte es dann 
auch funktionieren.

> Wie sollte ich das richtiger Weise machen?

So wie Peter II sagt.

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.