下面的代码编译错误,提示 class2 未定义 #include<iostream>
using namespace std;class class2;class class1{
int i;
public:
void set(int x){i=x;}
void outi(class2& y){cout<<y.j<<endl;}  //   提示错误处
};
class class2{
static int j;
public:
friend void class1::outi(class2& y);
};
//------------------------------------------------------
void main(){
class1 c1;
c1.set(4);
class2 c2;

}

解决方案 »

  1.   

    class class2{
    static int j;
    public:
    friend void class1::outi(class2& y);
    };
    class class1{
    int i;
    public:
    void set(int x){i=x;}
    void outi(class2& y){cout<<y.j<<endl;}  //  
    };
    这样
      

  2.   

    不行,那样有提示 class1 未定义
      

  3.   

    #include<iostream>
    using namespace std;class class2{
    static int j;
    public:
    friend class class1;
    };
    class class1{
    int i;
    public:
    void set(int x){i=x;}
    void outi(class2& y){cout<<y.j<<endl;}  //   提示错误处
    };//------------------------------------------------------
    void main(){
    class1 c1;
    c1.set(4);
    class2 c2;

    }
    //////////////////////
    class class2;
    这样肯定是不行的
      

  4.   

    谢谢大家回复,问题是这样解决的:#include<iostream>
    using namespace std;class class2;class class1{
    int i;
    public:
    void set(int x){i=x;}
    void outi(class2& y);
    };
    class class2{
    int j;
    public:
    friend void class1::outi(class2& y);
    };
    void class1::outi(class2& y){cout<<y.j<<endl;};
    //------------------------------------------------------
    void main(){
    class1 c1;
    c1.set(4);
    class2 c2;
    c1.outi(c2);
    }