example 1:
char* message = ( m_message != null ? m_message : "" );
above line gives compiler error invalid conversion const char* char*. in g++ compiler. below piece of code works.
example 2:
char* message; if(m_message) message = m_message; else message = "";
why compiler error g++
in first example not second? both ways work fine in windows.
the string literal -> char*
conversion allowed (but deprecated) if direct - can't let value "pass through" somewhere else decay const char*
.
your second code conversion directly string literal char*
, "only" deprecated.
the first 1 first pointer decay const char*
- result of m_message != null ? m_message : ""
const char*
- , attempt convert resulting const char*
char*
, isn't allowed.
this code produces error, same reason:
const char* empty() { return ""; } char* message; if(m_message) message = m_message; else message = empty();
Comments
Post a Comment