C++面向对象的如何解决一个包含另外一个类B的类A的成员函数,(吸口气继续读),直接访问类B的数据成员

程序+疑问如下:(由于长度过长请进行加上头文件和主函数可以查看报错情况)-------------------------------------------------... 程序+疑问如下:(由于长度过长 请进行加上头文件和主函数可以查看报错情况)
-----------------------------------------------------
class point
{
private:
int x,y;
};

class circle
{
private:
int x,y;
point b;
public:
void judge()
{
b.x=1;//如何在【circle】的类下的函数中直接对类【point】的成员访问,修改,用友元的话,又牵涉到两个类定义先后的问题
b.y=2;//曾经试过超前引用(就是前向声明),也没有办法解决
}
};
-----------------------------------------------------------------------------------------------
以下是个人尝试的办法但是都失败了,不知道有没有办法改(ps由于学校考试只能提交一个代码,所以多文件解决方案无法在此使用)

失败1:
class circle;//希望通过前向引用,进而使用友元
class point
{
private:
int x,y;
public:
friend void circle::judge();//还是收到VC的"use of undefined type 'circle'"的提示

};

class circle
{
private:
int x,y;
point b;
public:
void judge()
{
b.x=1;
b.y=2;
}
};

于是乎想到了第二种,前向声明是允许使用对象指针或引用的,可糟糕的是,弄个对象指针出来完全不知道该怎么用
----------------------------
class point;//希望通过前向声明,在第一个【circle】中建立【point】型的指针,可完全不会使用这个指针

class circle{
private:
int x,y;
point *b;
public:
void judge(){
b=new point;//vc给出的报错是"no appropriate default constructor available"
b->x=1;//下面这两个自然也不行了
b->y=2;
}

};

class point{
private:
int x,y;
public:
friend void circle::judge();//还是收到VC的"use of undefined type 'circle'"的提示

};
展开
 我来答
鎏金阁
2015-05-11 · TA获得超过580个赞
知道小有建树答主
回答量:483
采纳率:80%
帮助的人:360万
展开全部
从这个问题可看出你对类的概念并没有理解。
既然是用派生类的对象,就与基类的对象无关。
如果只是要想使用基类的成员函数,则可直接使用派生类中的,功能完全一样。
追问
怎么说,对派生类和基类这两个名词不知道啊,百度一下得知是“继承”方面的内容,我还没有看到这一章,他在比较后面,所以说,这个可以通过后面的知识解决吗?
追答
可以。C++的类,涉及到与C完全不同的程序设计理念,所以需要系统地学习。
很多人以为只要会定义类、对象,会用对象,就是掌握了C++,实际上完全没理解。
C++的特点是面向对象,要精通根据任务需求来构建合适类族的封装、继承、多态性、重载,以及公有消息和私有消息,这与面向过程是完全不同的处理策略。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式