Solidity

OnlyOwner 修飾符的未聲明標識符

  • November 7, 2022

所以我創建了一個修飾符來使它對於某些功能只有合約的部署者可以使用該功能。但是一旦我創建了它,我就會收到一個未聲明的標識符錯誤。這是我的建構子:

constructor() public{
   AdopterID =0; //increments 1 every time there is a new adopter addded
   DogID=0; //increments 1 everytime there is a new dog added
   address owner = msg.sender;
}

這是我拋出錯誤的修飾符:

modifier onlyOwner(){
   require(msg.sender == owner, "Not the Owner");
   _;
}

誰能告訴我怎麼了?它看起來很基本,不應該有任何錯誤。

您需要在建構子之外實例化所有者並在建構子中分配它。

address public owner;

constructor() public{
   AdopterID =0; //increments 1 every time there is a new adopter addded
   DogID=0; //increments 1 everytime there is a new dog added
   owner = msg.sender;
}

建構子()公共{ AdopterID = 0; //每次有新的adopter加1 DogID=0; //每次有新狗添加地址時增加1 owner = msg.sender; }

您在建構子範圍內聲明所有者變數。如果您想在契約中的任何地方使用所有者,則在全域範圍內聲明所有者。

////////////////

地址所有者;建構子()公共{ AdopterID = 0; //每次有新的adopter加1 DogID=0; //每次添加新狗時增加 1 owner = msg.sender; }

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