C++ Konstante

Gast #5189036
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
};
(Firma: Torrox.de) #5189064
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren