Member 13049206 Ответов: 2

Как мне получить свой класс "уровня" для получения личной информации из другого класса?


У меня есть класс с именем "данные", в котором я выполняю некоторую работу с файлами, где у меня есть 4 частных переменных.Я хочу использовать эти данные в другом классе под названием "уровень".Как я могу использовать эти частные переменные в другом классе?

Что я уже пробовал:

Я пытался получить доступ к объекту, возвращая значение через функцию, но это говорит что-то о "операторе",я предполагаю, что это как-то связано с перегрузкой "оператора", но я не знаю, как это сделать, и не знаю, работает ли он между классами

[no name]

Вы используете общедоступные свойства.

Member 13049206

Что ты имеешь в виду

[no name]

Я имею в виду именно то, что сказал.

Richard MacCutchan

- здесь говорится что-то о"
Итак, вы хотите, чтобы мы угадали, что такое "это", и что" это " сказало, и когда или где? Почему бы не показать фактический код и точное сообщение об ошибке, и люди могут иметь некоторое представление о том, о чем вы говорите?

2 Ответов

Рейтинг:
13

CPallini

Остроумное предложение.
5.

Maciej Los

Спасибо, Карло.

Рейтинг:
10

CPallini

Очевидное решение, уже предложенное, заключается в реализации getter и setter (если у вас есть доступ как на чтение, так и на запись к переменным) методы в классе data а потом использовать его в классе level.

#include <iostream>
using namespace std;

class data
{
  int d; // the private variable d
public:
  data(int d):d(d){}

  int get_d() const {return d;} // grant read access to d
  void set_d(int d){this->d = d;} // grant write access to d
};


class level
{
public:
  // read access to d
  void show_d(const data & dt)
  {
    cout << dt.get_d() << endl;
  }
  // write access to d
  void inc_d(data & dt)
  {
    dt.set_d( dt.get_d() + 1);
  }
};

int main()
{
  data dt(5);

  level lv;
  lv.show_d( dt);
  lv.inc_d(dt);
  lv.show_d(dt);
}
Таким образом, однако, частная переменная выставляется (через геттер и сеттер) всем data класс потребителей.

Другой подход использует друг[^] спецификатор для предоставления level класс полный доступ ко всем data член класса.
#include <iostream>
using namespace std;

class level; // forward declaration of level class
class data
{
  int d; // the private variable d
public:
  data(int d):d(d){}
  friend class level; // grant to level class full access to private members
};


class level
{
public:
  // read access to d
  void show_d(const data & dt)
  {
    cout << dt.d << endl;
  }
  // write access to d
  void inc_d(data & dt)
  {
    ++dt.d;
  }
};

int main()
{
  data dt(5);

  level lv;
  lv.show_d( dt);
  lv.inc_d(dt);
  lv.show_d(dt);
}


Maciej Los

5ед!