Quiero una función que cree un documento en mi contrato. Eliminé todo lo innecesario. Va así:
contract MyContract{
mapping (uint => document) documents;
struct document{
address author;
bytes32 hashedContent;
}
function addDocument(bytes32 docHash) public{
document newDoc = document (msg.sender,docHash); //*
[...]
}
}
Los documentos son estructuras, y quiero crearlos a partir de una función y luego agregarlos permanentemente a una asignación. Tengo un error en la //*
línea que dice:
MyContract.document memory is not implicitly convertible to expected type struct MyContract.document storage pointer. document newDoc = document (docHash,msg.sender); ^---------------------------------------------^
(de Remix) La parte izquierda es almacenamiento pero creo que la parte izquierda es memoria.
¿Es posible hacer lo que estoy tratando de hacer?
Puedes hacer esto:
documents[whateverInt] = document(msg.sender,docHash);
Si es absolutamente necesario declarar el documento antes de configurarlo, debe hacer esto:
document memory newDoc = document(msg.sender,docHash);
documents[whateverInt] = (doc);
De lo contrario, newDoc
será un puntero de almacenamiento predeterminado, pero document(msg.sender,docHash)
será un valor y no un puntero.
Cabra teletransportadora
natewelch_
Cabra teletransportadora
TypeError: Member "push" not found or not visible after argument-dependent lookup in mapping(uint256 => address)
natewelch_