Во-первых, вы должны поставить кавычки вокруг адреса электронной почты:
#define SERVICE_EMAIL "service@company.com"
Во-вторых, вам вообще не следует использовать #define
. Вместо этого используйте переменную const
:
const String SERVICE_EMAIL = "service@company.com";
#define
s небезопасны, не имеют области видимости и обычно являются злыми.
Наконец, вы можете рассмотреть возможность использования std::string
вместо вашего String
класса.
Обновление
Проблема в том, что препроцессор #define
s - это не более чем текстовые замены. Когда препроцессор будет готов, ваш компилятор увидит
_email = NOTIFICATION_CONSTANTS::"service@company.com";
В этом пространстве имен нет строковой константы. SERVICE_EMAIL
не является идентификатором любого рода - это просто указание препроцессору заменить любое вхождение SERVICE_EMAIL
на "service@company.com"
.
Решение состоит в том, чтобы удалить квалификатор пространства имен:
_email = SERVICE_EMAIL;
Лучшее решение:
Если у вас нет доступа к #define
, вам следует поместить его в заголовочный файл, если это возможно:
#include "Notification_Constants.h"
namespace NOTIFICATION_CONSTANTS {
const String REAL_SERVICE_EMAIL = SERVICE_EMAIL;
}
и затем используйте NOTIFICATION_CONSTANTS::REAL_SERVICE_EMAIL
вместо него, у которого есть область видимости, тип, правильный член пространства имен и т. Д.