Contract-Debugging
返回子對象的公共屬性
我想我錯過了一些非常簡單的東西。以下合約
contract Genobject{ uint public item; function Genobject(uint _val){ item=_val;} } contract Caller{ Genobject public instance; function Caller(){ instance= new Genobject(3); } function Recall() returns (uint){ return Genobject.item; } }
給出這個錯誤
MultiConstructor.sol:27:16:錯誤:成員“項目”在類型(契約 Genobject)中依賴於參數的查找後未找到或不可見
return Genobject.item; ^------------^
我所有的類型都是相同的,並且“項目”是公開聲明的,因此它應該是可讀的。怎麼了?
提前致謝
這是您的程式碼,已修改:
pragma solidity ^0.4.4; contract Genobject { uint public item; function Genobject(uint _val) { item = _val; } } contract Caller { Genobject public instance; function Caller() { instance = new Genobject(3); } function recall() constant returns (uint) { return instance.item(); } }
以下是展示您的合約執行的 Browser Solidity 的螢幕截圖:
以下是我所做的更改:
- 重命名
Recall()
為recall()
.- 該
recall()
函式標記constant
為該函式不修改數據,而是返回數據。- 該
recall()
函式返回變數的item()
值instance
而不是類Genobject
。item``recall()
由自動生成的item()
公共函式訪問。