对象作为成员变量
Posted
技术标签:
【中文标题】对象作为成员变量【英文标题】:object as member variable 【发布时间】:2012-02-29 07:23:42 【问题描述】:您好,我在访问对象时遇到了问题,
在我的程序中有 2 类 A 类和 B 类
b 类有一个成员变量名,保持为私有。gettes/setter 函数可以访问这个变量(因为变量是私有的)。
在 A 类中,有一个成员变量,B 类 b(private) 的对象。我使用了一个 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;
【问题讨论】:
【参考方案1】:您需要通过引用(或指针)返回成员:
B& GetB()
return b;
//or
B* GetB() //i'd prefer return by reference
return &b;
您现在拥有它的方式是返回对象的副本。
所以B A::GetB()
不会返回原始对象。您对其进行的任何更改都不会影响a
的成员。如果您通过引用返回,则不会创建副本。您将返回作为 a
成员的确切 B
对象。
【讨论】:
以上是关于对象作为成员变量的主要内容,如果未能解决你的问题,请参考以下文章