mikrocontroller.net

Forum: PC-Programmierung C++ Konstante


Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?



//const int max = 3;  // Variante 3


class A : public I_B
{

private:

  enum a {max = 3};     // Variante 1
  //const int max = 3;  // Variante 2
  I_B *Observer[max] = { nullptr, nullptr, nullptr };

// weiterer Code
};

Autor: Peter II (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Erwin schrieb:
> Wie sollte ich das richtiger Weise machen?

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

Autor: Torsten Robitzki (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.