Compilation Solidity-错误:找不到标识符或标识符不唯一。编译错误

Compilation Solidity-错误:找不到标识符或标识符不唯一。编译错误,compilation,solidity,Compilation,Solidity,我曾尝试使用编译器版本0.5.12编译此代码,但出现了一个异常: browser/Untitled.sol:21:24:DeclarationError:找不到标识符或标识符不唯一 函数getRoleOf(地址ad)公共返回(字符串txt){ ^----^ 我的代码: pragma solidity >=0.4.22 <0.5.13; contract Max{ mapping(address => uint256) private balaces; mappi

我曾尝试使用编译器版本0.5.12编译此代码,但出现了一个异常:

browser/Untitled.sol:21:24:DeclarationError:找不到标识符或标识符不唯一

函数getRoleOf(地址ad)公共返回(字符串txt){

^----^

我的代码:

pragma solidity >=0.4.22 <0.5.13;
contract Max{
    mapping(address => uint256) private balaces;
    mapping(address => role) private roles;
    enum role{
        Admin,
        Manager,
        User
    }
    
    constructor() public{
        balaces[msg.sender] = 1000;
        roles[msg.sender] = role.Admin;
    }
    
    function getRoleOf(adress ad) public returns(string txt){
        if(roles[ad] == role.User){
            txt = "User";
            return;
        }
        if(roles[ad] == role.Manager){
            txt = "Manager";
            return;
        }
        if(roles[ad] == role.Admin){
            txt = "Admin";
            return;
        }
        return "Нет такого пользователя";
    }
}
pragma solidity>=0.4.22 uint256)私人余额;
映射(地址=>角色)私有角色;
枚举角色{
管理
经理
使用者
}
构造函数()公共{
余额[消息发送方]=1000;
角色[msg.sender]=角色.Admin;
}
函数getRoleOf(地址ad)公共返回(字符串txt){
if(角色[ad]==角色.User){
txt=“用户”;
回来
}
if(角色[ad]==角色管理器){
txt=“经理”;
回来
}
if(角色[ad]==角色.Admin){
txt=“Admin”;
回来
}
返回“аааазаааа”;
}
}

我的代码有什么问题?

有一个输入错误:
函数getRoleOf(地址广告)
地址
应为
地址

以下使用Solidity Compiler 0.4.26在混音中编译

pragma solidity >=0.4.22 <0.5.13;
contract Max{
    mapping(address => uint256) private balaces;
    mapping(address => role) private roles;
    enum role{
        Admin,
        Manager,
        User
    }

    constructor() public{
        balaces[msg.sender] = 1000;
        roles[msg.sender] = role.Admin;
    }

    function getRoleOf(address ad) public returns(string txt){
        if(roles[ad] == role.User){
            txt = "User";
            return;
        }
        if(roles[ad] == role.Manager){
            txt = "Manager";
            return;
        }
        if(roles[ad] == role.Admin){
            txt = "Admin";
            return;
        }
        return "Нет такого пользователя";
    }
}
pragma solidity>=0.4.22 uint256)私人余额;
映射(地址=>角色)私有角色;
枚举角色{
管理
经理
使用者
}
构造函数()公共{
余额[消息发送方]=1000;
角色[msg.sender]=角色.Admin;
}
函数getRoleOf(地址ad)公共返回(字符串txt){
if(角色[ad]==角色.User){
txt=“用户”;
回来
}
if(角色[ad]==角色管理器){
txt=“经理”;
回来
}
if(角色[ad]==角色.Admin){
txt=“Admin”;
回来
}
返回“аааазаааа”;
}
}
以上答案(由@abcoathup提供)适用于0.4.26,如果您想在solidity版本0.5.12中执行代码,请检查以下代码(进行轻微优化)

pragma solidity>=0.4.22 uint256)私人余额;
映射(地址=>角色)私有角色;
枚举角色{
管理
经理
使用者
}
构造函数()公共{
余额[消息发送方]=1000;
角色[msg.sender]=角色.Admin;
}
函数getRoleOf(地址ad)公共返回(字符串内存txt){
txt=“ааазааааа”;
if(角色[ad]==角色.User){
txt=“用户”;
}else if(角色[ad]==角色管理器){
txt=“经理”;
}else if(角色[ad]==role.Admin){
txt=“Admin”;
}
返回txt;
}
}

布拉格实体^0.8.0

进口”https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";

合同BlackLivesMatterToken是ERC20{ 建造商(unit256 initialSupply)公共ERC20(“BlackLivesMatterToken”,“BLM”){ _薄荷糖(味精发送者,初始供应); }
}

您应该在代码段中添加代码并添加描述
pragma solidity >=0.4.22 <0.5.13;
contract Max{
    mapping(address => uint256) private balaces;
    mapping(address => role) private roles;
    enum role{
        Admin,
        Manager,
        User
    }

    constructor() public{
        balaces[msg.sender] = 1000;
        roles[msg.sender] = role.Admin;
    }

    function getRoleOf(address ad) public returns(string memory txt){
        txt = "Нет такого пользователя";
        if(roles[ad] == role.User){
            txt = "User";
        } else if(roles[ad] == role.Manager){
            txt = "Manager";
        } else if(roles[ad] == role.Admin){
            txt = "Admin";
        }
        return txt;
    }
}