对象作为成员变量
问题描述:
而访问对象您好我有面临一个问题,对象作为成员变量
在我的程序有2类的类A和B
B类有一个成员变量名,它kepts为私人。和gettes/setter函数来访问这个变量(bcoz变量是私有的)。
在类A中有一个成员变量,类B的对象b(私有)。并且我使用了一个getter在类之外获取此对象。
现在我想使用类a的对象来设置对象b的名称。 所以创建了下面的代码,但我没有工作。
请帮我解决这个问题。
// GetObject.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
class B
{
int name;
public:
int getname()
{
return name;
}
void SetName(int i)
{
name = i;
}
};
class A
{
private:
B b;
public:
B GetB()
{
return b;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int ii = 10;
A a;
a.GetB().SetName(ii);
std::cout<<" Value :"<<a.GetB().getname();
getchar();
return 0;
}
答
您需要通过引用(或指针)返回成员:
B& GetB()
{
return b;
}
//or
B* GetB() //i'd prefer return by reference
{
return &b;
}
你现在的样子,你正在返回对象的副本。因此B A::GetB()
不会返回原始对象。您对它做出的任何更改都不会影响a
的成员。如果您通过参考返回,则不会创建副本。您将返回确切的B
对象,该对象是a
的成员。
yaa ....多数民众赞成在一个好主意。 我试过,只是now.it works.thank你非常 – 2012-02-29 07:28:18
@Aneesh当然,很乐意帮助。 – 2012-02-29 07:30:25