// SomeCls.hстатические Интс, единицы компиляции и тройной оператор
class SomeCls
{
static const int PERIOD_ALARM_NORMAL = 5;
static const int PERIOD_ALARM_THRESH = 1;
void method()
{
bool b = true;
const int d = b ? PERIOD_ALARM_THRESH : PERIOD_ALARM_NORMAL;
}
} obj;
Он собирается построить ок. Теперь выньте реализацию метода() и поместите его в файл cpp:
//SomeCls.cpp
#include "SomeCls.h"
void SomeCls::method()
{
bool b = true;
const int d = b ? PERIOD_ALARM_THRESH : PERIOD_ALARM_NORMAL;
}
Почему mr. линкер сказать
неопределенная ссылка на
SomeCls::PERIOD_ALARM_NORMAL' undefined reference to
SomeCls :: PERIOD_ALARM_THRESH»
?
Благодаря
EDIT: Мне кажется, что это в .h, тройной оператор принимает статическую сопзЬ INTS как rvalues но ... вне decalrative .h, он рассматривает их как Lvalue и требует определения , Вот что я понял из ответов ниже. Престижность Bada компилятора (некоторые EABI линукс thinggie)
Почему линкер говорит, что когда вы делаете * what *? Что вы пытаетесь точно связать? –
@Scarlet: Я думаю, вы что-то не понимаете. OP не хочет тестировать 'd == b', он хочет назначить' d', тестирование на 'b'. – Xeo
Пожалуйста, не используйте all-caps для имен переменных. Они традиционно используются только для макросов препроцессора (кроме того, что они очень утомительны для чтения). –