170 похожих чатов

Парни, такой вопрос. Вот такое сделал в .h файле, чтобы

для этого метода в .cpp всегда нашлось определение. Но в .cpp оно не хочет видеть реализацию этого метода и пишет:

error LNK2019: unresolved external symbol "protected: unsigned int





Как такое можно поправить? Вот сам код:

.h

class Client
{
#ifdef ENABLE_TEST_FUNCTIONALITY
protected:
uint32_t GetClSessionId(void) const;
#endif
#ifndef ENABLE_TEST_FUNCTIONALITY
private:
uint32_t GetClSessionId(void) const;
#endif
};




.cpp

uint32_t Client::GetClientSessionId(void) const
{
return ClientSession->GetID();
}

18 ответов

20 просмотров

Если уж "хакать" приватность в тестах (что не рекомендуется), то я бы порекомендовал завести макрос PRIVATE_UNLESS_TESTED, который будет раскрываться в private или public. Примерно так сделали здесь

Gabriel- Автор вопроса
Alexander Karaev
Если уж "хакать" приватность в тестах (что не реко...

О, спасибо, щас чекну. У меня всё ещё остаётся вопрос, почему оно не работает в моём случае? ;(

Gabriel- Автор вопроса
Alexander Karaev
А без макросов работает?

class Client { uint32_t GetClSessionId(void) const; }; Вот так работает.

потому что класс по умолчанию private члены имеет

Alexander Karaev
Если уж "хакать" приватность в тестах (что не реко...

к слову, изменения private на public может повлечь изменение порядка расположения членов в лейауте: Any number of access specifiers may appear within a class, in any order. Member access specifiers may affect class layout: the addresses of non-static data members are only guaranteed to increase in order of declaration for the members not separated by an access specifier (until C++11)with the same access (since C++11). For StandardLayoutType, all non-static data members must have the same access. (since C++11)

Gabriel- Автор вопроса
Kelbon
потому что класс по умолчанию private члены имеет

Да, там я провтыкал первый макрос. Там protected.

🙈 Не надо так делать с классами!

Gabriel
;(

Ты понимаешь вообще, что ты делаешь? Это ж UB в чистом виде!

ЗОЧЕМ

А почему не через #else?

Gabriel
Да, там я провтыкал первый макрос. Там protected.

Смысл так делать? вот протестировал ты тестовый вариант класса... Далаешь релиз... И это — ДРУГОЙ вариант класса! Его надо ЗАНОВО тестировать!

Vlad
норм наброс

Царя знаешь?

vile
Царя знаешь?

Всё, хватит уже. Царя свергли более чем 100 лет назад.

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта