如何指向类数据成员的地址?

时间:2019-02-05 12:45:40

标签: c++ pointers wrapper

我正在上以下课:

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

为了简洁起见,我当然不包括构造函数/析构函数/ etc。 该类是在我收到的数据中给我的,因此我无法修改其代码或任何其他内容。

现在,在我的代码中,我想拥有一个类,比方说MyClass,它读取了他们的ClassA内容并将其进一步分发。有点像TheClassClassA输入的解释器。在我的代码中,我希望使用此解释器,即从MyClass而不是他们的ClassA获取数据。希望我仍然很清楚。 像这样:

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

但是最好的方法是什么?一种简单的方法是从输入中获取值并将其另存为MyClass实例的数据成员。但是,其中一些成员可能是Double,甚至是字符串,因此,我不想浪费很多资源来复制/存储值(我将遍历数百万个输入类的实例)。

我是否可以通过某种方式定义解释器MyClass,使它的成员指向输入成员的地址,而不是保存值?这样MyClass :: AccessP()会查看theirClassA :: fP的地址并传递其值?

非常期待建议的解决方案! 预先感谢。

P.S。显然这样的东西叫做“包装纸”吗?

0 个答案:

没有答案