fatal error C1063: compiler limit : compiler stack overflow

CCmilan 2013-07-31 02:52:55
下面这段函数在VC6.0下编译没问题,但是在VS2010下却在红色部分处断开,各位大侠请指教一下!

#ifndef cvec_hpp
#define cvec_hpp
#include <vector>

//using namespace std; // so "vector" below is actually "std::vector", etc.

template<class T> class cvec : public std::vector<T>
{
public: // type names like iterator are also inherited
typedef typename cvec::size_type size_type;
typedef typename cvec::iterator iterator;
typedef typename cvec::difference_type difference_type;
typedef typename cvec::reference reference;
typedef typename cvec::const_reference const_reference;

cvec() {}

cvec(size_type n, const T& value = T()){ std::vector<T>(n, value); }

cvec(iterator i, iterator j){ std::vector<T>(i, j); }

reference operator[](difference_type i)
{
DASSERT(i >=0 && i < static_cast<difference_type>(this->size()));
return vector<T>::operator[](i);
}

const_reference operator[](difference_type i) const
{
DASSERT(i >=0 && i < static_cast<difference_type>(this->size()));
return vector<T>::operator[](i);
}
};
#endif // cvec_hpppp
...全文
183 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rocktyt 2013-08-01
  • 打赏
  • 举报
回复
看来lz是以为c++有java那种在构造函数里调用基类构造函数的语法了? 调用基类构造函数要放在初始化列表里,不能放在函数体内
lm_whales 2013-08-01
  • 打赏
  • 举报
回复
cvec(size_type n, const T& value = T()){ std::vector<T>(n, value); } //??? //我感觉应该这样才对吧,在初始化表里处理. cvec(size_type n, const T& value = T()):std::vector<T>(n, value){} cvec(size_type n, const T& value = T()){ std::vector<T>(n, value);//这个东东,什么作用也不起呀。 }
ri_aje 2013-07-31
  • 打赏
  • 举报
回复
试了一下,g++-4.8 没有问题。说实在,没看明白这代码要干吗。

64,282

社区成员

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

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