Addresses
嘗試編譯智能合約錯誤:鍵入literal_string
我正在學習智能合約,但我在編譯一個時遇到了問題,它給了我這個錯誤消息:
錯誤:類型 literal_string “0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1” 不能隱式轉換為預期的類型地址。地址多重簽名=“0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1”;
我試過了,看起來是這樣的,我們不應該對合約地址進行硬編碼嗎?
這是引起麻煩的行的程式碼:
address multisig = "0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1";
感謝您的幫助!
顯式聲明為地址
您需要明確定義地址,而不是嘗試強制將字元串轉換為地址。
為此,只需使用
address()
運算符從地址的十六進製表示中生成地址類型值。例子:
address multisig = address(0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1);
初始化地址的正確方法是不使用引號
address a = 0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1;
但這會產生一個警告,需要混合大小寫校驗和的可靠地址
address b = 0x5c15741C7ABb1b0E8FB0BD41b5ed8c17219926A1;