我得到一個錯誤在下面的代碼段地址錯誤 - ç採取的臨時
void setStyle(const ctlStyleBase* style)
{
//do something
}
void create(const ctlStyleBase* style = 0)
{
if(style == 0) setStyle(&ctlStyleGradient()); // error : taking address of temporary
else setStyle(style);
}
我不認爲這是錯誤的,因爲我只在使用setStyle使用它,它贏得了」 t在setStyle返回之前被破壞。 有人能告訴我代碼是否有問題?
[編譯克++ 4.7.2]
傳遞const引用以避免錯誤:'const const ctlStyleBase&style' – 2013-02-13 10:02:40
它有一個臨時地址的問題(它不比'&(5 + 7)'更有效) - 你是否期望它也能工作?) – 2013-02-13 10:02:42
使用參考,看起來像'ctlStyleGradient()'的價值回報,並可以綁定是臨時的* const引用*,那麼改變你的簽名,以'無效的setStyle(常量ctlStyleBase和風格)'與'的setStyle調用(ctlStyleGradient());' – Nim 2013-02-13 10:03:04