标题:友元函数重载运算符[]
只看楼主
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
结帖率:31.58%
 问题点数:0 回复次数:3 
友元函数重载运算符[]
#include <iostream>
#include <string>
using namespace std;
class Array{
int size;
int *date;
public:
    Array(int n){
        size=n;
        date=new int[n];
    }
    void set(){
        for(int i=0;i<size;i++)
            cin>>date[i];
    }
    int* getdate(){
        return date;
    }
    friend int operator[](Array a,int n);
};
int operator[](Array a,int n){
    return a.getdate()[n];
}
int main(){
  Array a(3);
  a.set();
  cout<<a[0]<<a[1]<<a[2];
  return 0;
}
error C2801: 'operator [' must be a <Unknown> member
求解
搜索更多相关主题的帖子: friend public include return 
2012-07-14 19:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
[] 貌似只能重载为成员函数。

请参考下面的回答:
https://bbs.bccn.net/viewthread.php?tid=371709
2012-07-15 00:11
半年换半生
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2012-7-21
得分:0 
class Array{
    int size;
    int *date;
public:
    Array(int n){
        size=n;
        date=new int[n];
    }
    void set(){
        for(int i=0;i<size;i++)
            cin>>date[i];
    }
    int getdate(int n){
        return *(date+n);
    }
    int operator[](int n);
};
int Array::operator[](int n){
    return this->getdate(n);
}

int main()

{

   
    Array a(3);
    a.set();
    cout<<a[0]<<a[1]<<a[2];

   
    system("pause");

    return 0;

}
2012-07-21 16:04
jiantiewen
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:61
专家分:307
注 册:2012-6-22
得分:0 
既然[]只是用来操作class Array,就直接作为成员函数来定义就是了,弄成友元,又有什么意义。
2012-07-21 20:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373398-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067789 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved