任何人都可以告訴我爲什麼有一個編譯錯誤,下面的代碼?字符[N]與字符*
struct Foo {
char m_p[8];
inline operator char *() const { return m_p; }
};
隨着GCC 4.5,我給出的消息:
error: invalid conversion from 'const char*' to 'char*'
而數字火星編譯器沒有問題的。
編輯:下面列出的答案提到函數的const限定符。我真的不明白那麼就是爲什麼下面的代碼有沒有這樣的問題:由於函數內
struct Foo2 {
char *m_p;
inline operator char *() const { return m_p; }
};
這看起來很好。我認爲這裏的內容是重要的。 – 2011-03-30 21:57:38
那麼,你從編譯器得到的錯誤信息是不言自明的。你有一個'const char [8]'數組,它可以被轉換爲'const char *'指針,而不是'char *'指針。 – AnT 2011-03-30 21:59:49