Начальное значение для постоянных данных - PullRequest
1 голос
/ 13 сентября 2010

следующий код в моем классе C ++

static const  QString ALARM_ERROR_IMAGE ;

я хочу инициализировать

ALARM_ERROR_IMAGE          = "error.png";

Можно ли инициализировать error.png до static const QString ALARM_ERROR_IMAGE Хотите держать его в классе

Ответы [ 2 ]

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

Статические переменные класса должны быть явно определены в области имен только один раз (независимо от того, дополняются они или нет).

В файле .cpp (например, в <ClassName>.cpp)в глобальном пространстве имен (при условии, что ваш класс находится в глобальном пространстве имен), определите его следующим образом (при условии, что в QString существует соответствующий конструктор)

Примечание: я пропустил const в определении ниже

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

$ 9.4.2 / 2 - "Объявление статического члена данных в его определении класса не является определением и может иметь неполный тип, отличный от cv-квалифицированного void. Определение для статического члена данныхдолжен появиться в области пространства имен, содержащей определение класса члена. В определении в области пространства имен имя члена статических данных должно быть квалифицировано именем его класса с помощью оператора ::. "

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

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

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