简单的C++问题 50

classA{public:inta;Bb;//B也是一个类}请问类B中的成员函数该如何访问A的成员变量a?... class A
{
public:
int a;
B b; //B也是一个类
}
请问类B中的成员函数该如何访问A的成员变量a?
展开
 我来答
myx8178633
2008-11-23 · TA获得超过1038个赞
知道答主
回答量:54
采纳率:0%
帮助的人:47.9万
展开全部
可以将B定义为A类的派生类,下面是我在百度知道上给人写的程序,就以这个为例吧。。。

#include <iostream>
#include <string.h>

using namespace std;

class CPerson
{
protected:
char name[20];
char sex[10];
int number;
public:
CPerson(char *name,char *sex,int number);
virtual void print();
};

class CStudent:public CPerson
{
private:
int score1;
int score2;
int score3;
public:
CStudent(char *name,char *sex,int number,int score1,int score2,int score3);
void print();
};

class CTeacher:public CPerson
{
private:
int age;
public:
CTeacher(char *name,char *sex,int number,int age);
void print();
};

CPerson::CPerson(char *name, char *sex,int number)
{
strcpy(this->name,name);
strcpy(this->sex,sex);
this->number=number;
}

void CPerson::print()
{
cout<<"学生的姓名是:"<<name<<endl;
cout<<"学生的性别是:"<<sex<<endl;
cout<<"学生的编号是:"<<number<<endl;
cout<<endl;
}

CStudent::CStudent(char *name,char *sex,int number,int score1,int score2,int score3):CPerson(name,sex,number)
{
this->score1=score1;
this->score2=score2;
this->score3=score3;
}

void CStudent::print()
{
cout<<"学生的姓名是:"<<name<<endl;
cout<<"学生的性别是:"<<sex<<endl;
cout<<"学生的编号是:"<<number<<endl;
cout<<endl;

cout<<"学生的第一门考试成绩是:"<<score1<<endl;
cout<<"学生的第二门考试成绩是:"<<score2<<endl;
cout<<"学生的第三门考试成绩是:"<<score3<<endl;
cout<<endl;
}

CTeacher::CTeacher(char *name, char *sex, int number, int age):CPerson(name,sex,number)
{
this->age=age;
}

void CTeacher::print()
{

cout<<"教师的姓名是:"<<name<<endl;
cout<<"教师的性别是:"<<sex<<endl;
cout<<"教师的编号是:"<<number<<endl;
cout<<endl;

cout<<"教师的年龄是:"<<age<<endl;
cout<<endl;
}

int main()
{
CStudent stu("张三","男",110,80,90,100);
CTeacher tea("李四","男",119,37);
stu.print();
tea.print();
return 0;
}

这里,CStudent和CTeacher都是CPerson中的类,通过公有继承,调用了CPerson中的构造函数,从而访问到了其中的name,sex和number成员变量。。。

在面向对象中,都可以通过这样的思想实现不同类之间的访问。。。

当然这不是唯一的方法,还可以通过定义友元函数,就是friend。。。;这样的语句访问类中的成员变量等等。。。

你自己可以找些题目来编一下就没问题了^_^
疾似云流
2008-11-23 · TA获得超过1159个赞
知道小有建树答主
回答量:1093
采纳率:0%
帮助的人:471万
展开全部
定义一个A的对象,直接就可以访问a了,因为a是public属性。

如果a是static的话就可以用A::a来访问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gyhmichael
2008-11-23 · TA获得超过257个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:115万
展开全部
B中的成员函数要访问A的成员变量a,必须要先实例化一个类A的对象:

int B:: Function(A aObj)
{
return aObj.a;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7c90db7
2008-11-23 · 超过14用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:29万
展开全部
我认为类B与类A没有什么联系,要访问类A的成员变量,要么建立继承关系,要么就是通过A的成员函式间接访问。(我想了半天都没有想明白,像这种模糊的关系很令人头痛,一般做项目不会这么用的。仅是个人意见。)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永太香4459
2008-11-25 · 超过17用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:28.7万
展开全部
class A
{
public:
int a;
friend B ;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流星剑1988
2008-12-07 · TA获得超过237个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:206万
展开全部
在A的定义的前先定义类B,然后在类A的定义中就可以作为嵌入对象嵌入类型为B的对象b了。类B中的成员函数就可以访问类A中的成员数据了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式