对象作为成员变量

问题描述:

而访问对象您好我有面临一个问题,对象作为成员变量

在我的程序

有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的成员。

+0

yaa ....多数民众赞成在一个好主意。 我试过,只是now.it works.thank你非常 – 2012-02-29 07:28:18

+0

@Aneesh当然,很乐意帮助。 – 2012-02-29 07:30:25