C++沉思录里的代码,不知道错在哪里?我抄错了?

cuiniu1988 2010-05-07 12:19:55
#include<iostream>
using namespace std;

template<class T>
class Array
{
public:
Array():data(0),zs(0){}
Array(unsigned size):sz(size),data(new T[size]){}
~Array(){delete []data;}

const T& operator[](unsigned n) const
{
if(n >= sz || data == 0)
throw "Array subscript out of range";
return data[n];
}

T& operator[](unsigned n)
{
if(n >= sz || data == 0)
throw "Array subscript out of range";
return data[n];
}


operator T*()
{
return data;
}

operator const T* () const
{
return data;
}
private:
T* data;
unsigned sz;
Array(const Array& a);
Array& operator= (const Array);
};

void main()
{
Array<int> a(3);
a[0] = 0;
a[1] = 1;
a[2] = 2;
cout<<a[2]<<endl;

}

=============================================================
vs2008报很多错
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuiniu1988 2010-05-07
  • 打赏
  • 举报
回复
我太粗心了,谢谢楼上各位了。
niejimaoo 2010-05-07
  • 打赏
  • 举报
回复
细心细心
brookmill 2010-05-07
  • 打赏
  • 举报
回复
Array():data(0),zs(0){}
改成sz
wesleyluo 2010-05-07
  • 打赏
  • 举报
回复
楼上的解释下呗。
chainyu 2010-05-07
  • 打赏
  • 举报
回复
scott大师教导我们要离operator隐式类型转换远一些
#include<iostream>
using namespace std;

template<class T>
class Array
{
public:
Array():data(0),sz(0) { }
Array(unsigned size):data(new T[size]), sz(size) { }
virtual ~Array() { delete [] data; }

const T& operator[](const unsigned n) const
{
if(n >= sz || data == 0)
throw "Array subscript out of range";
return data[n];
}

T& operator[](const unsigned n)
{
if(n >= sz || data == 0)
throw "Array subscript out of range";
return data[n];
}


operator T*()
{
return data;
}

operator const T*() const
{
return data;
}

private:
T* data;
unsigned sz;
Array(const Array& a);
Array& operator= (const Array);
};

int main()
{
Array<int> Retry(3);

Retry[(unsigned)0] = 0;
Retry[(unsigned)1] = 1;
Retry[(unsigned)2] = 2;
cout<<Retry[(unsigned)2]<<endl;

return 0;

}



cattycat 2010-05-07
  • 打赏
  • 举报
回复
按1楼那个改一下吧,应该是写错了。
其他的错误,可能是a[]的时候,重载的运算符不能确定调用哪一个了,至少const T& operator []和T& operator[]是不能区分的。
needle2 2010-05-07
  • 打赏
  • 举报
回复
不懂,帮顶
sallan 2010-05-07
  • 打赏
  • 举报
回复
楼上看得很仔细阿
zhao19851019 2010-05-07
  • 打赏
  • 举报
回复
牛啊,高手

64,666

社区成员

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

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