Image

Imagehydrargentum wrote in Imageru_cpp

Знания

Пусть простят меня гуры за банальности - история сегодняшнего открытия (можт кому будет полезно и сэкономит нервов)

Есть x перегруженых методов у класса Session

setProperty(const char* key, std::string val);
setProperty(const char* key, bool val);
setProperty(const char* key, int val);
setProperty(const char* key, double val);


вызывая session->setProperty("DUMB KEY", "DUMB VALUE");

Как вы думаете какой вызовется ?

setProperty(const char* key, std::string val); ???

Хрен. Вызовется

setProperty("DUMB KEY", true);

никаких варнингов, никаких ошибок и все якобы шито-крыто...
Цена знания 5 часов отладки со звонким матом...

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