指针的应用 到底那里出错了 问题好大

来源:互联网 发布:声音处理 傻瓜 软件 编辑:程序博客网 时间:2024/05/01 09:27
#include<iostream>using namespace std;class MyArray{private:    int *arr; //用于存放动态分配的数组内存首地址    int size; //数组大小public:    MyArray(int sz=50);    MyArray(int a[],int sz); //由一个内置类型的数组初始化~MyArray(void){  delete [] arr;} //析构函数,注意释放空间    MyArray &operator =(const MyArray &A); //重载“=”使得数组对象可以整体赋值    bool operator == (MyArray& A); //重载==,使得Array对象能整体判断两个数组是否相等(size相等且对应元素相等)    friend ostream& operator << (ostream& out,MyArray& A);//重载<<,输出数组    int GetSize(void) const; //取数组大小;};//以下为类成员函数的定义MyArray::MyArray(int az=50){  arr=new int[az];  size=az; for(int i=0;i<size;i++) *(arr+i)=0;}MyArray::MyArray(int a[],int sz){  arr=new int[sz];   size=sz;  for(int i=0;i<size;i++)   *(arr+i)=a[i];}MyArray  &MyArray::operator =(const MyArray &A){    if(size!=A.size){delete []arr;  size=A.size;  arr=new int[size];}int n=A.size;    int* destptr=arr;      int* srcptr=A.arr;      while(n--)      {          *destptr=*srcptr;          destptr++;          srcptr++;      }      return *this;}bool MyArray::operator == (MyArray& A){    bool no=true;if(size!=A.size){  no=false;}else{int n=A.size;    int* destptr=arr;      int* srcptr=A.arr;      while(n--)      {          if(*destptr!=*srcptr){no=false;break;}          destptr++;          srcptr++;  }  }  return no;}ostream& operator << (ostream& out,MyArray& A){   for(int i=0;i<A.size;i++){     out<<*(A.size+i)<<" ";   }  out<<A.size;    return out;}int MyArray:: GetSize(void) const{    return size;}//测试函数int main(){    int a[10]= {1,2,3,4,5,6,7,8,9,10};    int b[10]= {4,5,6,7,8,9,10,11,12,13};    MyArray arr1(a,10);  //测试用内置的数组初始化新定义的数组对象    MyArray arr2(b,10);    MyArray arr3(10);   //测试只指定大小的新数组对象的初始化    cout<<arr1;    //测试对<<的重载    cout<<arr2;    //测试对<<的重载    cout<<arr3;    //测试对<<的重载    cout<<"The size of arr1 is: "<<arr1.GetSize()<<endl;   //测试GetSize()成员函数    return 0;}


错误的原因:

--------------------Configuration: Cpp1 - Win32 Debug--------------------Compiling...Cpp1.cppC:\Documents and Settings\Administrator\桌面\Cpp1.cpp(21) : error C2572: 'MyArray::MyArray' : redefinition of default parameter : parameter 1        C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(9) : see declaration of 'MyArray::MyArray'C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(76) : error C2248: 'size' : cannot access private member declared in class 'MyArray'        C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(7) : see declaration of 'size'C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(77) : error C2248: 'size' : cannot access private member declared in class 'MyArray'        C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(7) : see declaration of 'size'C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(77) : error C2100: illegal indirectionC:\Documents and Settings\Administrator\桌面\Cpp1.cpp(79) : error C2248: 'size' : cannot access private member declared in class 'MyArray'        C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(7) : see declaration of 'size'C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(94) : error C2593: 'operator <<' is ambiguousC:\Documents and Settings\Administrator\桌面\Cpp1.cpp(95) : error C2593: 'operator <<' is ambiguousC:\Documents and Settings\Administrator\桌面\Cpp1.cpp(96) : error C2593: 'operator <<' is ambiguous执行 cl.exe 时出错.Cpp1.obj - 1 error(s), 0 warning(s)









原创粉丝点击