结构错误:即使包含它也不被识别

问题描述:

更多的排队: 我从mai结构中得到一个无法识别的'eld'。结构错误:即使包含它也不被识别

头包含:

const int c=10; 
struct Array 
{ 
int n; 
int els[c]; 
}; 

我得到的错误是:

error: request for member 'els' in 'A', which is of non-class type 'Array [(((unsigned int)(((int)a) + -0x000000001)) + 1)] {aka Array [(((unsigned int)(((int)a) + -0x000000001)) + 1)]}'

代码:

Array arrayInp() 
/* Create 2 vectors by the length defined by the user*/ 
{ 
int a,b,i; 

cout<<"enter length of the first array: "; 
cin>>a; 
cout<<"enter length of the second array: "; 
cin>>b; 

Array A[a],B[b]; 

cout<<"insert first array:"; 
for (int i=0;i<a;i++) 
{ 
    cin>>A.els[i]; 
} 


cout<<"insert second array:"; 
for (int i=0;i<a;i++) 
    { 
     cin>>B.els[i]; 
    } 
return A,B; 
} 

还有一个错误,我回来isent右有人可以解释我的方式如何从函数返回数组结构? 后构建错误:

..\scr\main.cpp:32:10: warning: left operand of comma operator has no effect [-Wunused-value] ..\scr\main.cpp:32:10: error: could not convert '(0, ((Array*)(& B)))' from 'Array*' to 'Array' ..\scr\main.cpp:11:10: warning: unused variable 'i' [-Wunused-variable] ..\scr\main.cpp:33:1: warning: control reaches end of non-void function [-Wreturn-type]

+1

这至少是目前还不清楚,我,代码试图实现什么。 for循环的迭代次数不会为数组“A”(或“B”)中的每个元素填充“els”的所有元素。是不是应该是动态的(els')成员(由用户提供大小)?是否有原因没有使用STL(例如'std :: vector ')。 – hmjd 2012-03-15 14:12:55

此:

Array A[a] 

限定的Array阵列称为A。你需要指数A访问的Array成员或(我怀疑这是你的意图)改变了声明:

Array A, B; 

只是要指出的是,变长数组不是标准的C++(我认为他们是一个GCC扩展)。

return声明:

return A,B; 

使用comma operator。在这种情况下,B将返回并且是warning: left operand of comma operator has no effect的原因。

unused variable i警告抱怨说在功能int a, b. i;未使用的开始宣布i,这是由于i重新声明在两个for循环:无论是从顶部声明中删除ifor循环不重新声明。

没有看到完整的源代码,我怀疑warning: control reaches end of non-void function是因为int main()没有return 0;

您可能想要A[i].els而不是A.els[i]

+0

我做了您所建议的更改,仍然是相同的错误: .. \ scr \ main.cpp:32:10:警告:逗号运算符的左操作数没有效果[-Wunused-value] .. \ scr \ main。 cpp:32:10:error:无法从'Array *'转换为'Array' .. \ scr \ main.cpp:11:10:警告:未使用的变量'i'[-Wunused-variable] .. \ scr \ main.cpp:33:1:warning:控制到达非void函数的结尾[-Wreturn-type] – 2012-03-15 13:53:11

+0

@BogdanMaier:'return A ,B;'相当于'return B;'。 – 2012-03-15 13:55:14

+0

你说“还是一样的错误”,但这显然是一个完全不同的错误。你现在看到一个新的错误的原因是你的原始代码实际上有很多错误。 – 2012-03-15 14:12:05

我除了hmjd评论,我想我应该指出,这已经实现,但更好的标准库;在可能的情况下使用std库结构几乎总是会更好,因为它们对其他C++开发人员是众所周知的,它们的功能已经完整记录,并且最终它们具有与其他标准功能(如标准算法)集成的统一接口。

有两种结构,你可以使用

固定大小:

std::array<int, 6> array_; //an array of six elements 

而且可调整大小

std::vector<int> vector_(6); //a container of six elements. 

http://en.cppreference.com/w/cpp/container/array http://en.cppreference.com/w/cpp/container/vector

+0

哦,谢谢,但事情是我需要使用我的建筑....这就是要求。 – 2012-03-15 13:57:14

+0

@需要什么? – 111111 2012-03-15 13:57:34

+0

我对学校有问题。 – 2012-03-15 14:03:23