c++友元函数问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 00:22:43
为什么我声明为友元函数但还是不能访问私有数据(*ptr,size)呢?
#include<iostream.h>
#include<stdlib.h>
class Array
{
friend istream &operator<<(istream &,Array &);
friend ostream &operator<<(ostream &,const Array &);
private:
int *ptr;
int size;
};
istream &operator>>(istream &input,Array &a)
{
for(int i=0;i<a.size;i++)
input>>a.ptr[i];
return input;
}
ostream &operator<<(ostream &output,const Array &a)
{
for(int i=0;i<a.size;i++)
{
output<<a.ptr[i];
if((i+1)%10==0)
output<<endl;
}
if(i%1!=0)
output<<endl;
return output;
}
太假了 投票算了

我想你应该这样改:
在类前加上下面3句
class Array;
istream &operator>>(istream &,Array &);
ostream &operator<<(ostream &,const Array &);

class Array
{
friend istream &operator>>(istream &,Array &);
friend ostream &operator<<(ostream &,const Array &);
private:
int *ptr;
int size;
};

friend istream &operator<<(istream &,Array &);
"<<" 应该是">>"
里面还有语法错误。改了下:
#include<iostream>
#include<stdlib.h>
using namespace std;
class mArray
{
public:
friend istream &operator>>(istream &,mArray &);
friend ostream &operator<<(ostream &,const mArray &);
private:
int *ptr;
int size;
};
istream &operator>>(istream &input,mArray &a)
{
for(int i=0;i<a.size;i++)
input>>a.ptr[i];
return input;
}
ostream &operator<<(ostream &output,co