Solidity
從不同合約中的映射訪問結構
我想訪問/修改來自另一個契約的契約的數據。如果您能幫助我理解錯誤,那就太好了!
我收到以下錯誤:
Untitled1:33:8: Error: Indexed expression has to be a type, mapping or array >(is function (address) constant external returns (bool,address,uint256,bool)) if (a.Owners[msg.sender].sub = false){ ^------^
下面是程式碼:
pragma solidity ^0.4.7; contract abc{ struct Owner{ bool exist; address owner; uint share; bool sub; } // un owner as son address et son percent d'ownership mapping (address => Owner) public Owners; uint public no_owners; uint public no_sub; function abc(){ // a l'execution, l'ownership est transferer a l'excecuteur avec 100 shares. //initate } function transfer(address to,uint amount){ //transfer ownership } } contract cde{ mapping (uint => abc) all_cde; uint public f; function ask_subdivise(abc a){ //les different owners vont devoir lancer la fonction // une fois que tout les owners on lancer la fonction, le lot est diviser. if (a.Owners[msg.sender].sub = false){ a.Owners[msg.sender].sub=true; a.no_sub+=1; } } }
結構結構 (…) 是已編譯合約的內部結構,其他合約在其中不可見。
相反,您需要有一個訪問器和修改器函式來為您解包並返回結構數據。有關範例,請參見此答案。
據我了解,您可以通過函式訪問變數。因此,要解決您的問題,您必須致電
a.Owners(msg.sender)
. 但是之後會出現這個錯誤:錯誤:在元組中進行參數相關查找後,成員“子”未找到或不可見
請參閱:從其他合約訪問結構