Знания
Пусть простят меня гуры за банальности - история сегодняшнего открытия (можт кому будет полезно и сэкономит нервов)
Есть 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 часов отладки со звонким матом...
В плюсах примитивы никогда не преобразуются неявно в классы даже если у классов есть соответствующий конструктор, при наличии вариантов преобразоваться в другой примитив.
Есть 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 часов отладки со звонким матом...
В плюсах примитивы никогда не преобразуются неявно в классы даже если у классов есть соответствующий конструктор, при наличии вариантов преобразоваться в другой примитив.
