注册 登录
编程论坛 C++教室

关于友元类的问题,有点不懂,请好心人解答下

fc176154001 发布于 2014-08-19 04:32, 504 次点击
先上代码
#include"iostream"
using namespace std;
class X
{
private:
    int _chang;
    int _kuan;
public:
    void set(int a,int b)  //请问这里为什么不能用构造函数 X(int a,int b) {_chang=a;_kun=b} ?
    {
        _chang=a;
        _kuan=b;
    }
    int areax()
    {
        return (_chang)*(_kuan);
    }
    friend class Y;
};
class Y
{
private:
    X ar;
public:
    Y()  //接上面所说的,一使用构造函数X,这里就会报错!!
    {
        ar._chang=2;
        ar._kuan=2;
    }
    int areay()
    {
        return (ar._chang)*(ar._kuan);
    }
};
void main()
{
    X x;
    x.set(3,6);
    cout<<"矩形X的面积为:"<<x.areax()<<endl;
    Y y;
    cout<<"矩形Y的面积为:"<<y.areay()<<endl;
    return;
}
这个程序可以编译的,但是当把类X中
void set(int a,int b)  
    {
        _chang=a;
        _kuan=b;
    }
这个函数改成X的构造函数
X(int a,int b)
{
    _chang=a;
    _kuan=b;
}编译就通不过呢,请大神给解答下,新手可能问的有点白痴,多包涵!谢谢!
2 回复
#2
小习小习2014-08-19 07:43
第一,缺少无参数构造函数,X x调用了无参数的构造函数,类在没有定义任何构造函数的时候,系统才会默认产生构造函数,一旦定义了任何形式的构造函数,系统就不会在产生默认的构造函数了。
第二,构造函数不能显示调用,X.x(3,6)这样有错误
#3
fc1761540012014-08-19 09:23
谢谢
1