Как указать на адрес члена класса данных? - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю со следующим классом:

class TheirClassA 
  {
    public:
      double GetP() const {return fP;}; // get p
    private:
      double fP; // p
  };

Конечно, существуют также конструкторы / деструкторы / и т. Д., Которые я не включаю для краткости.Этот класс предоставляется мне в данных, которые я получаю, поэтому я не могу изменить его код или что-либо еще.

Теперь в моем коде я хочу иметь класс, скажем, MyClass, который читает содержимое ItsClassA и распределяет ихв дальнейшем.Вроде как интерпретатор ввода OurClassA.В моем коде я хочу работать с этим интерпретатором, то есть получать данные из MyClass вместо OurClassA.Надеюсь, мне все еще ясно.Что-то вроде:

TheirClassA *input = (TheirClassA*)Data->At(i); 
MyClass *interpreter = new MyClass(input);
double P = interpreter->AccessP();

Но как лучше всего это сделать?Простой способ - получить значения из входных данных и сохранить их как члены данных экземпляра MyClass.Однако некоторые из этих членов могут быть Double или даже строками, поэтому я не хочу тратить много ресурсов на копирование / хранение значений (я буду зацикливаться на миллионах экземпляров входного класса).

Есть ли способ для меня как-то определить интерпретатор MyClass таким образом, чтобы его члены указывали на адреса членов ввода вместо хранения значений?Так что MyClass :: AccessP () смотрит на адрес ItsClassA :: fP и передает его значение?

С нетерпением ждем предлагаемых решений!Заранее спасибо.

PS Видимо, такая вещь называется «обертка»?

...