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 № 1Oto 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.