您在访问对象时遇到了问题,
在我的程序中有2个类A和B
类b有一个成员变量名,它作为private.and 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;
}
答案 0 :(得分:2)
您需要通过引用(或指针)返回成员:
B& GetB()
{
return b;
}
//or
B* GetB() //i'd prefer return by reference
{
return &b;
}
现在你拥有它的方式,你将返回一个对象的副本。
因此B A::GetB()
不会返回原始对象。您对其所做的任何更改都不会影响a
的成员。如果您通过引用返回,则不会创建副本。您将返回B
成员的确切a
对象。