web-dev-qa-db-ja.com

TypeError:関数のパラメーターのデータの場所は「メモリ」でなければなりませんが、指定されていません

コードをコンパイルしようとしましたが、次のエラーが発生しました。

TypeError:関数のパラメーターのデータの場所は「メモリ」でなければなりませんが、指定されていません

私のコード:

pragma solidity ^0.5.0;

contract memeRegistry {
    string url;
    string name;
    uint timestamp;

    function setmeme(string _url,string _name, uint _timestamp) public{
        url = _url;
        name = _name;
        timestamp = _timestamp;   
    }
}

構造体、配列、またはマッピングタイプのすべての変数の明示的なデータの場所が必須になりました。これは、関数パラメーターと戻り変数にも適用されます。

memoryの後にstringを追加します

function setmeme(string memory _url, string memory _name, uint _timestamp) public{

solidity 0.5.0については、こちらを確認してください。変更 https://solidity.readthedocs.io/en/v0.5.0/050-breaking-changes.html

5
k1ck
//The version I have used is 0.5.2

pragma solidity ^0.5.2;

contract Inbox{


string public message;

//**Constructor** must be defined using “constructor” keyword

//**In version 0.5.0 or above** it is **mandatory to use “memory” keyword** so as to 
//**explicitly mention the data location**

//you are free to remove the keyword and try for yourself

 constructor (string memory initialMessage) public{
 message=initialMessage;
 }

 function setMessage(string memory newMessage)public{
 message=newMessage;

 }

 function getMessage()public view returns(string memory){
 return message;
 }
}
2
Kartik ganiga

それは私のために働いています。

  • 文字列memory

enter image description here

0

異なるバージョンのsolidityコンパイラーを選択してください。 ^0.4.25は私のために働きます。

ソリッド性コンパイラのバージョンは、ファイルとremixのコンパイルタブの両方で設定する必要があります(ドロップダウンメニューです)。

0
nikos fotiadis