/ / Jak zachować stałą statyczną jako element klasy - c ++, visual-c ++, qt, qt4

Jak zachować statyczną zmienną const jako element klasy - c ++, visual-c ++, qt, qt4

Chcę zachować statyczną zmienną stałą jako członka klasy. Czy można zachować i jak mogę zainicjować tę zmienną.

Niektóre ciało pomogło, mówiąc to

 QString <ClassName>::ALARM_ERROR_IMAGE = "error.png";

Inicjalizacja wartości dla danych stałych

Próbowałem tak

w klasie CPP piszę

static  QString ALARM_WARNING_IMAGE ;

W konstruktorze piszę

ALARM_WARNING_IMAGE        = "warning.png";

Ale nie działa ... Proszę o pomoc, podając kilka wskazówek

Odpowiedzi:

3 dla odpowiedzi № 1

Oto podstawowy pomysł:

struct myclass{
//myclass() : x(2){}      // Not OK for both x and d
//myclass(){x = 2;}       // Not OK for both x and d
static const int x = 2;   // OK, but definition still required in namespace scope
// static integral data members only can be initialized
// in class definition
static const double d;    // declaration, needs definition in namespace scope,
// as double is not an integral type, and so is
// QSTRING.
//static const QString var; // non integral type
};

const int myclass::x;             // definition
const double myclass::d = 2.2;    // OK, definition
// const QString myclass::var = "some.png";

int main(){
}

8 dla odpowiedzi № 2

Poza jakąkolwiek funkcją w pliku źródłowym napisz:

const QString ClassName::ALARM_WARNING_IMAGE = "warning.png";

Nagłówek:

class ClassName {
static const QString ALARM_WARNING_IMAGE;
};

Ponadto nie zapisuj niczego w konstruktorze. To zainicjowałoby zmienną statyczną za każdym razem, gdy nazwa klasy zostanie utworzona ... co nie działa, ponieważ zmienna jest stała ... zły pomysł, że tak powiem. consts można ustawić tylko raz podczas deklaracji.


0 dla odpowiedzi № 3

Próbować:

QString ClassName::ALARM_WARNING_IMAGE = "warning.png";


0 dla odpowiedzi nr 4

Tylko stałe statyczne elementy danych integralnych mogą być inicjowane wewnątrz klasy lub struktury.