如何解决Solidity - 错误:标识符未找到或唯一
我试图编译这段代码,但它给了我一个错误(标识符未找到或不唯一)为什么?请帮我!! 代码的概念是在结构数组内的数组中添加一个元素,然后搜索元素是否存在 我用的是编译器 0.4.0
pragma solidity ^0.4.0;
contract Ballot {
struct EntityStruct {
uint[] entityData;
bool isEntity;
bool iscontent;
uint vote;
uint predata;
string isrep;
}
mapping(address => EntityStruct) public entityStructs;
mapping(uint => entityData) public enitiyinfo;
uint[] public datalist;
address[] public entityList;
function newEntity(address entityAddress,uint entityDataa) public returns(uint rowNumber) {
bytes32 datahash;
uint counter = 0;
datahash = keccak256(abi.encodePacked(entityDataa));
for (uint i=0; i<entityList.length; i++)
{
for (uint y=0; y<datalist.length; y++)
{
if (datahash == keccak256(abi.encodePacked(entityStructs[entityList[i]].entityData[datalist[y]])))
{
counter = counter+1;
}
}
}
// if (counter >0)
// {
require(counter == 0,"not aloowed!!");
entityStructs[entityAddress].entityData.push(entityDataa);
// entityStructs[entityAddress].entityData = entityDataa;
entityStructs[entityAddress].isEntity = true;
return entityList.push(entityAddress)-1;
}
function SearchForContent( uint data) public{
uint rr = 0;
for (uint i=0; i<entityList.length; i++) {
for (uint y=0; y<5; y++)
{
if ( data == entityStructs[entityList[i]].entityData[y])
rr = rr+1;
}
require(rr >0,"not available data");
// result = "available data";
//else
//require(data == entityStructs[entityList[i]].entityData,"notexsists data!!");
}
}
}
解决方法
错误来自第 13 行:
mapping(uint => entityData) public enitiyinfo;
您的 entityData
类型仅在 EntityStruct
结构的范围内定义:程序的其余部分不知道它是什么。但是,您似乎从未真正使用过相关映射,因此您可以删除该行。
然后您的代码使用 v0.4.26 编译得很好。不过,一些较早的 0.4.x 版本不支持您使用的某些功能,因此您可能需要在 pragma
语句中反映这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。