Solidity:TypeError 无效类型。从类型(字符串存储指针)到请求的字符串内存的隐式转换无效
Solidity: TypeError Invalid type. Invalid implicit conversion from type (string storage pointer) to string meory requested
我正在尝试 return 来自结构的值,不同的方法都不成功
struct Briefing {
string description;
uint max_influencer;
uint jobvalue;
bool achievement;
}
function getSummary() public view returns (Briefing) {
return Briefing (
string,
uint,
uint,
bool
);
当您使用引用类型(例如 struct
)时,您总是需要指定数据位置。在这种情况下,它是内存,因为您需要先将值加载到内存,然后 return 从内存中加载它们。
您的问题没有具体说明您是需要 return struct
的新实例还是从存储中加载它,所以这里是两者的示例:
pragma solidity ^0.8;
contract MyContract {
struct Briefing {
string description;
uint max_influencer;
uint jobvalue;
bool achievement;
}
Briefing summary;
function getSummaryHardcoded() public view returns (Briefing memory) {
return Briefing("desc", 1, 1, true);
}
function getSummaryStored() public view returns (Briefing memory) {
return summary;
}
}
我正在尝试 return 来自结构的值,不同的方法都不成功
struct Briefing {
string description;
uint max_influencer;
uint jobvalue;
bool achievement;
}
function getSummary() public view returns (Briefing) {
return Briefing (
string,
uint,
uint,
bool
);
当您使用引用类型(例如 struct
)时,您总是需要指定数据位置。在这种情况下,它是内存,因为您需要先将值加载到内存,然后 return 从内存中加载它们。
您的问题没有具体说明您是需要 return struct
的新实例还是从存储中加载它,所以这里是两者的示例:
pragma solidity ^0.8;
contract MyContract {
struct Briefing {
string description;
uint max_influencer;
uint jobvalue;
bool achievement;
}
Briefing summary;
function getSummaryHardcoded() public view returns (Briefing memory) {
return Briefing("desc", 1, 1, true);
}
function getSummaryStored() public view returns (Briefing memory) {
return summary;
}
}