c – 作为成员变量的对象

嗨我在访问对象时遇到了问题,

在我的程序中有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对象.

点赞