Solidity
繼承結構
繼承的契約可以訪問他父母的結構變數嗎?
我正在嘗試下面的程式碼,但我無法訪問定義的結構
ContractA
,所以我不知道這是否根本不可能,或者我是否遺漏了一些東西。
AppStorage.sol
struct AppStorage { uint num; uint num2; }
ContractA.sol
import './AppStorage.sol'; contract ContractA { AppStorage internal s; function setNum() public { s.num = 20; } function setNum2() public { s.num2 = 15; } }
ContractB.sol
contract ContractB is ContractA { function getNum2() public view returns(uint) { return s.num2; // -----> returns 0 } }
謝謝!
編輯:
sample-script.js
const ContA = await ethers.getContractFactory('ContractA'); const contA = await ContA.deploy(); await contA.deployed(); await contA.setNum(); await contA.setNum2(); const ContB = await ethers.getContractFactory('ContractB'); const contB = await ContB.deploy(); await contB.deployed(); let num = await contB.getNum2(); console.log('num: ', num);
您部署了 2 個不同的合約,
contA
typeContractA
和contB
typeContractB
。您設置了
s.num2
ofcontA
並檢查了 num 的數量contB
。這就像創建兩個對象,每個對像都有自己的地址和自己的狀態變數。我不知道您要做什麼,但是如果
ContractB
應該是您的擴展,則ContractA
應該只部署 ContractB 並且只有一個實例。