嗨我在访问对象时遇到了问题,
在我的程序中有2个类A和B类
class b有一个成员变量名,kepts为private.and gettes / setter函数来访问这个变量(bcoz变量是私有的).
在A类中,有一个成员变量,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的成员.如果您通过引用返回,则不会创建副本.您将返回作为a成员的确切B对象.