Addresses

嘗試編譯智能合約錯誤:鍵入literal_string

  • March 23, 2018

我正在學習智能合約,但我在編譯一個時遇到了問題,它給了我這個錯誤消息:

錯誤:類型 literal_string “0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1” 不能隱式轉換為預期的類型地址。地址多重簽名=“0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1”;

我試過了,看起來是這樣的,我們不應該對合約地址進行硬編碼嗎?

這是引起麻煩的行的程式碼:

address multisig = "0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1";

感謝您的幫助!

顯式聲明為地址

您需要明確定義地址,而不是嘗試強制將字元串轉換為地址。

為此,只需使用address()運算符從地址的十六進製表示中生成地址類型值。

例子:

address multisig = address(0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1);

初始化地址的正確方法是不使用引號

address a = 0x5c15741c7abb1b0e8fb0bd41b5ed8c17219926a1;

但這會產生一個警告,需要混合大小寫校驗和的可靠地址

address b = 0x5c15741C7ABb1b0E8FB0BD41b5ed8c17219926A1;

引用自:https://ethereum.stackexchange.com/questions/43598