Service: C/C++ Tipps:

Statische konstante Arrays auf Klassenebene definieren und deklarieren


Eigentlich ist das eine Standardaufgabe. Wenn man sie jedoch nur selten verwendet, fragt man sich jedesmal wieder neu: "Wie funktioniert das doch gleich noch 'mal?"

Zunächst noch einmal die Aufgabenstellung im Detail:

Ich benötige ein Array von statischen Konstanten innerhalb einer Klasse, die über eine statische Member-Funktion verfügbar sein soll. Z.B. eine Liste von numerischen Konstanten. Also deklariere ich in der Header-Datei wie folgt:

class Foo
{
public:
    Foo();
    static const long Item(const long& Index);

private:
    static const long m_lSomeNumbers[5];
};

Wie und wo wird nun m_lFiveConstNumber definiert? Die Antwort: In der Implementierungsdatei noch vor der eigentlichen Implementierung der Klasse. Also wie folgt:

// Definition der statischen Konstanten
const long Foo::m_lSomeNumbers[] =
{
    10,
    20,
    30,
    40,
    50
};

// Definition der sonstigen Klassenelemente
Foo::Foo()
{
// ...
}

const long Foo::Item(const long& Index)
{
// Achtung: Im wirklichen Leben muß 'Index' auf den zulässigen Bereich geprüft werden!
    return m_lSomeNumbers[Index];
}

Nun kann die Klasse Foo wie folgt verwendet werden:

    ATLTRACE(_T("Foo::Item(1): %d\n"), Foo::Item(1));

// Ausgabe:
    Foo::Item(1): 20

Anmerkung: Bitte beachten, dass hier keine Deklaration für 'Foo' erfolgen muss. Es wird ja schließlich eine statische Klassenfunktion aufgerufen!

Seitenanfang

Kontaktaufnahme- und Terminvereinbarung:

Bei Fragen und für Terminvereinbarungen erreichen Sie uns unter:

0 63 49 99 07 38

0 151 51 95 34 00

Oder nutzen Sie das Kontaktformular




Ihr Ansprechpartner:


Hier sollte das Fahnungsfoto zu sehen sein.

Ralf Kunsmann

Spezialist für VBA-Programmierung
(alle Office-Anwendungen)
Entwickler der
VBA-Extension-Tools