объект как переменная-член - PullRequest
4 голосов
/ 29 февраля 2012

Привет, я столкнулся с проблемой при доступе к объекту,

в моей программе есть 2 класса класса A и B

класс b имеет имя переменной-члена, которая хранится как private.и gettes / setter функции для доступа к этой переменной (bcoz переменная является приватной).

в классе A, имеет переменную-член, объект класса B b (приватная). И я использовал геттер для ее полученияобъект вне класса.

Теперь я хочу установить имя объекта 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 Ответ

2 голосов
/ 29 февраля 2012

Вам необходимо вернуть элемент по ссылке (или указателю):

B& GetB()
{
   return b;
}
//or
B* GetB() //i'd prefer return by reference
{
   return &b; 
}

Как у вас сейчас, вы возвращаете копию объекта.

То есть B A::GetB() не возвращает исходный объект. Любые изменения, внесенные в него, не затронут участника a. Если вы вернетесь по ссылке, копия не будет создана. Вы бы возвращали точный B объект, который является членом a.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...