标题:关于友元类的问题,有点不懂,请好心人解答下
只看楼主
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
结帖率:100%
已结贴  问题点数:20 回复次数:2 
关于友元类的问题,有点不懂,请好心人解答下
先上代码
#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;
}编译就通不过呢,请大神给解答下,新手可能问的有点白痴,多包涵!谢谢!
搜索更多相关主题的帖子: private include public private include public friend friend private include public friend 
2014-08-19 04:32
小习小习
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:6
帖 子:1467
专家分:4792
注 册:2012-7-2
得分:0 
第一,缺少无参数构造函数,X x调用了无参数的构造函数,类在没有定义任何构造函数的时候,系统才会默认产生构造函数,一旦定义了任何形式的构造函数,系统就不会在产生默认的构造函数了。
第二,构造函数不能显示调用,X.x(3,6)这样有错误

实现自己既定的目标,必须能耐得住寂寞单干。
2014-08-19 07:43
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
得分:0 
谢谢

大神永远不能体会菜鸟们之间的惺惺相惜,
2014-08-19 09:23



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




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

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