求助类型转换
  • 板块学术版
  • 楼主HxDlBbCo877
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/28 20:55
  • 上次更新2024/3/28 22:44:51
查看原帖
求助类型转换
1055514
HxDlBbCo877楼主2024/3/28 20:55

我写了这么一坨东西,想试一下让数组越界时有提示

#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
template <class _T>
class arra
{
	private:
		int size;_T*a;
		class iterator
		{
			private:
				arra *arr;int i;
			public:
				iterator(arra *_arr,int _i):arr(_arr),i(_i){}
				operator _T(){if(i<0||i>=arr->size){cout<<"越界";return arr->a[0];}return arr->a[i];}
				_T operator+(_T x){return arr->a[i]+x;}
				_T operator-(_T x){return arr->a[i]-x;}
				_T operator*(_T x){return arr->a[i]*x;}
				_T operator/(_T x){return arr->a[i]/x;}
				void operator=(_T x){arr->a[i]=x;}
				bool operator>(_T x){return arr->a[i]>x;}
				bool operator<=(_T x){return arr->a[i]<=x;}
				bool operator>=(_T x){return arr->a[i]>=x;}
		};
	public:
		arra(int n):size(n),a(new _T[n]){for(int i=0;i<n;i++)a[i]=0;}
		iterator operator[](int n){return iterator(this,n);}
};
int main()
{
	arra <int> a(4);
	a[1]=3;
	int tmp=a[1];
	a[3]=a[1];
	cout<<tmp<<' <<a[3]<<'\n';
}

加减乘除都能用,但是赋值会炸。 a[3]=a[1]就会赋值失败,要a[3]=int(a[1])或者a[3]=tmp才行。 是等号重载错了还是类型转化错了吗

2024/3/28 20:55
加载中...