重写自定义数组类的运算符/开始/结束



对于练习,我们必须用各种不同的语言实现一个具有自定义边界的数组,其中一个恰好是 c++。不幸的是,我从来没有处理过 c++,现在正在努力完成它。我相信我已经完成了标题的正确"核心"。这个想法是用户在模板中指定边界,类在内部数组的帮助下伪造这一点。我们特别被告知要覆盖 [] 运算符并实现 begin(( 和 end(( 函数。我目前被困在视觉工作室调试器上,说以下内容:

Error   C2228   left of '.end' must have class/struct/union 

gcc编译器说:

In file included from Aufgabe1.test.cpp:2:
array.h: In instantiation of 'typename std::__cxx11::list<T>::iterator Array<T, L, H>::begin() [with T = int; int L = -2; int H = 1; typename std::__cxx11::list<T>::iterator = std::_List_iterator<int>]':
Aufgabe1.test.cpp:16:15:   required from here
array.h:29:25: error: request for member 'begin' in '((Array<int, -2, 1>*)this)->Array<int, -2, 1>::innerArray', which is of non-class type 'int [4]'
return innerArray.begin;
~~~~~~~~~~~^~~~~
array.h: In instantiation of 'typename std::__cxx11::list<T>::iterator Array<T, L, H>::end() [with T = int; int L = -2; int H = 1; typename std::__cxx11::list<T>::iterator = std::_List_iterator<int>]':
Aufgabe1.test.cpp:16:15:   required from here
array.h:33:25: error: request for member 'end' in '((Array<int, -2, 1>*)this)->Array<int, -2, 1>::innerArray', which is of non-class type 'int [4]'
return innerArray.end;
~~~~~~~~~~~^~~

简而言之,我无法从这里继续,因为搜索这些错误不会为迄今为止主要使用 java 的人带来任何澄清。我如何解决这些问题,我的这个数组的实现是否正确?

编辑: 不得不删除代码

您提到的第一条错误消息很好地解释了这个问题:

错误 C2228 左侧的".end"必须具有类/结构/联合

第二组消息告诉您发生这种情况的位置,特别是当您尝试使用innerArray.end时。".end"左边的东西是innerArray,它没有声明为classstructunion。(这是一个T数组。

因此,这归结为(C 样式(数组没有成员函数的事实。如果你需要一个"end"函数,也许你应该看看std::array,它将C风格的数组包装在一个class中。(如果要求是覆盖某些函数而不是实现它们,那么这就是您的教师可能想到的"数组"。

最新更新