友元类成员问题

jljhwang 2008-12-02 11:13:07
//Bottle.h
#pragma once
#include"Cartorn.h"

class CBottle
{
private:
double m_Length;
double m_Diameter;
public:
CBottle(double Length,double Diameter)
{
m_Length=Length;
m_Diameter=Diameter;
}

friend CCartorn::CCartorn(const CBottle& abottle); //这里出错
};



//Cartorn.h
#pragma once

#include"Bottle.h"
#include<iostream>
using namespace std;

class CCartorn
{
private:
double m_Length;
double m_Height;
double m_Width;
public:
CCartorn(const CBottle& abottle)
{
m_Length=abottle.m_Length;
m_Height=abottle.m_Diameter*3;
m_Width=abottle.m_Diameter*4;
}
double Volume() const
{
return m_Length*m_Height*m_Width;
}
void ShowVolume() const
{
cout<<Volume()<<endl;
}
};

//Main.cpp
#include<iostream>
#include"Cartorn.h"

int main()
{
CBottle bottle(1,2);
CCartorn car(bottle);
car.ShowVolume();

}

谁能告诉我怎么了?
...全文
71 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
门后面的猫 2008-12-02
  • 打赏
  • 举报
回复
查查资料,学习一下!
jljhwang 2008-12-02
  • 打赏
  • 举报
回复
class CBottle
{
private:
double m_Length;
double m_Diameter;
public:
CBottle(double Length,double Diameter)
{
m_Length=Length;
m_Diameter=Diameter;
}

friend class CCartorn; //使用友元类,我想要使用类的友元函数
};
bfhtian 2008-12-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 taodm 的回复:]
你现在2个头文件循环引用了。
[/Quote]
将Bottle.h改为
class CCartorn; //在此声明
class CBottle
{
private:
double m_Length;
double m_Diameter;
public:
CBottle(double Length,double Diameter)
{
m_Length=Length;
m_Diameter=Diameter;
}

friend CCartorn; //这里出错 //设置友元
};
jljhwang 2008-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
friend CCartorn::CCartorn(const CBottle& abottle); //这里出错

friend修饰一个非成员函数。
[/Quote]
怎么会是非成员函数
CCartorn(const CBottle& abottle); //是CCartorn的构造函数啊
papaofdoudou 2008-12-02
  • 打赏
  • 举报
回复
把ccartorn的定义提到前面试试看~
taodm 2008-12-02
  • 打赏
  • 举报
回复
你现在2个头文件循环引用了。
healer_kx 2008-12-02
  • 打赏
  • 举报
回复
friend CCartorn::CCartorn(const CBottle& abottle); //这里出错

friend修饰一个非成员函数。
lann64 2008-12-02
  • 打赏
  • 举报
回复
友元只有两种,友元函数和友元类。
声明友元函数时需要函数是具有返回类型的。其他类的构造函数显然不满足这个要求。
其实这里声明成友元类就可以了。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧