gccnew 数组??

jjcang 2008-09-27 12:02:05
题目讲不清楚,是这样的程序:

typedef int (abc)[32];
typedef list<abc> abc_list;
abc_list tt;
abc var;
tt.push_back(var);

gcc
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjcang 2008-09-27
  • 打赏
  • 举报
回复
也和list没多大关系,关键就是数组没有拷贝构造:

new int[32](); // ok
new int[32](0); // bad
jjcang 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lyghe 的回复:]
list中的内容必须是能够被拷贝构造的!!一般的类有默认拷贝,基本类型也有默认拷贝,但是数组没有!
[/Quote]

恩。我也刚刚发现是这个问题。正解!
pengzhixi 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lyghe 的回复:]
list中的内容必须是能够被拷贝构造的!!一般的类有默认拷贝,基本类型也有默认拷贝,但是数组没有!
[/Quote]

只能用指向数组的指针做为list的元素
太乙 2008-09-27
  • 打赏
  • 举报
回复
lz在弹出error的时候,你可以双击看看:



iterator erase(iterator _P)
{_Nodeptr _S = (_P++)._Mynode();
_Acc::_Next(_Acc::_Prev(_S)) = _Acc::_Next(_S);
_Acc::_Prev(_Acc::_Next(_S)) = _Acc::_Prev(_S);
allocator.destroy(&_Acc::_Value(_S));//这里通不过!
_Freenode(_S);
--_Size;
return (_P); }


太乙 2008-09-27
  • 打赏
  • 举报
回复


typedef int(abc)[32];

list<abc> l;//这会报错!

lyghe 2008-09-27
  • 打赏
  • 举报
回复
解释一下,list的push_back函数实际上是把传入的对象拷贝了一份放在列表里面。
lyghe 2008-09-27
  • 打赏
  • 举报
回复
list中的内容必须是能够被拷贝构造的!!一般的类有默认拷贝,基本类型也有默认拷贝,但是数组没有!
jjcang 2008-09-27
  • 打赏
  • 举报
回复
gcc报错: error: ISO C++ forbids initialization in array new
jjcang 2008-09-27
  • 打赏
  • 举报
回复
没写完。。


gcc会报错。

何解??

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧