Как сохранить статическую переменную const в качестве члена класса - PullRequest
4 голосов
/ 13 сентября 2010

Я хочу сохранить статическую переменную const в качестве члена класса.Можно ли сохранить и как я могу инициализировать эту переменную.

Некоторое тело помогло, сказав это

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

Инициализирующее значение для постоянных данных

Я пробовал вот так

в классе CPP я пишу

static  QString ALARM_WARNING_IMAGE ;

В конструкторе я пишу

ALARM_WARNING_IMAGE        = "warning.png";

Но не работает ... Пожалуйста, помогите, дав некоторыесоветы

Ответы [ 4 ]

10 голосов
/ 13 сентября 2010

Вне любой функции в исходном файле записать:

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

Заголовок:

class ClassName {
  static const QString ALARM_WARNING_IMAGE;
};

Кроме того, не пишите ничего в конструкторе. Это будет инициализировать статическую переменную каждый раз, когда создается экземпляр ClassName ... что не работает, потому что переменная const ... плохая идея, так сказать. Констант может быть установлен только один раз во время объявления.

4 голосов
/ 13 сентября 2010

Вот основная идея:

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(){
}
0 голосов
/ 13 сентября 2010

Только статические интегральные члены-данные могут инициализироваться внутри класса или структуры.

0 голосов
/ 13 сентября 2010

Попробуйте:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...