Ich habe Code wie diesen und möchte meinen Namen, Nachnamen und mein Alter in meiner Struktur festlegen, damit ich sie festlegen und mit meinen Funktionen verwenden möchte
hier ist mein Code:
pragma solidity >=0.4.0 <0.7.0;
contract NewHello{
address owner;
constructor()public{
owner = msg.sender;
}
modifier onlyOwner (){
require(msg.sender == owner);
_;
}
struct user{
string name;
string surname;
uint age;
}
user[] new_user;
mapping(address => string) public users; // contains a name for every address
function updateUser(address _address, string memory name,string memory surname,uint age) public onlyOwner {
user memory new_user = user(name,surname,age);
users[_address] = user(name,surname,age);
}
function getUser(address _address) public view returns(string memory name ,string memory surname,uint age) {
//if(users[_address].age == 0) throw;
return (users[_address].name,users[_address].surname,users[_address].age);
}
}
Ich bekomme 2 Fehler, zuerst ist einer:
TypeError: Type struct NewHello.user memory is
not implicitly convertible to expected type string storage ref.
users[_address] = user(name,surname,age);
^--------------------^
TypeError: Member "name" not found
or not visible after argument-dependent lookup in string storage ref.
wer kann mir bitte helfen?
Verwenden Sie eine Zuordnung wie:
mapping(address => user) public users
Jede Adresse hat einen Benutzer. Sie können dies verbessern, wenn Sie msg.sender anstelle von address (Funktionsparameter) verwenden, da Sie die Adresse nicht angeben müssen und jeder Benutzer seine Daten ändern und sehen kann ( onlyOwner
in diesem Fall müssen Sie den Modifikator entfernen). .
pragma solidity >=0.4.0 <0.7.0;
contract NewHello{
address owner;
constructor()public{
owner = msg.sender;
}
modifier onlyOwner (){
require(msg.sender == owner);
_;
}
struct user{
string name;
string surname;
uint age;
}
mapping(address => user) public users; // contains a user for every address
function updateUser(address _address, string memory name, string memory surname, uint age) public onlyOwner {
users[_address] = user(name, surname, age);
}
function getUser(address _address) public view returns(string memory name, string memory surname, uint age) {
//if(users[_address].age == 0) throw;
return (users[_address].name, users[_address].surname, users[_address].age);
}
}
Alberto
mapping(address => user) public users
:Furkan Demirel