2009-07-11 5 views

Antwort

18

Sie können - Sie setzen Const vor dem Typnamen.

class C 
{ 
    const int x; 

public: 
     C() : x (5) { } 
}; 
3

Sicher, der einfachste Weg ist, wie diese, wenn der Wert die gleiche über alle Instanzen Ihrer Klasse sein wird:

class X 
{ 
public: 
    static const int i = 1; 
}; 

Oder wenn Sie nicht möchten, dass es statisch:

class X 
{ 
public: 
    const int i; 
    X(int the_i) : i(the_i) 
    {  
    } 
}; 
+2

Das sollte Ihnen einen anderen Fehler geben, wie Sie es erklärten, ohne es zu definieren. Sie benötigen ein "int X :: i;" irgendwo. –

+2

@James - nicht so, wenn der Compiler aktuell genug ist, um inline statische const-Member zu unterstützen, die dort initialisiert werden, wo sie deklariert sind. –

+1

@James: Ich glaube nicht, dass das für statische const int gilt - Sie brauchen eigentlich keine separate Definition, weil der Compiler sie als eine wahre Konstante behandelt. – RichieHindle

8

Sie erklären es so, als ob Sie kein Mitglied wären. Beachten Sie, dass die Deklaration einer Variablen als const erhebliche Auswirkungen auf die Art und Weise hat, in der die Klasse verwendet wird. Sie werden definitiv einen Konstruktor brauchen, um es zu initialisieren:

class A { 
    public: 
     A(int x) : cvar(x) {} 
    private: 
     const int cvar; 
}; 
Verwandte Themen