【问题标题】:How to specify member pointer to an array element?如何指定指向数组元素的成员指针?
【发布时间】:2013-11-26 15:24:14
【问题描述】:

我有一个函数库,如下所示:

template<typename S1> void NastyFunction(S1 *array, EntryType S1::* member1);

所以如果我有一个结构数组,例如:

struct TData {
  float a;
  float b[10];
};

TData dataArray[N];

我可以将NastyFunction 应用于dataArray 中的所有a-s,使用:

NastyFunction( dataArray, &TData::a );

如何将此NastyFunction 应用于所有例如b[7]-s in dataArray

【问题讨论】:

    标签: c++ arrays pointers data-members


    【解决方案1】:

    你不能。虽然整个数组是类的成员,但它的各个元素不是,所以没有办法让成员指针指向它们。

    【讨论】:

      【解决方案2】:

      如果不添加另一个间接级别,您就无法做到这一点,以便您只引用类成员,例如:

      template<typename S1> void NastyFunction(S1 *array, EntryType* S1::* member1)
      {
        EntityType value = *member1;
      }
      
      struct TData {
        float b[10];
        float* ref = &b[7];
      };
      
      TData *dataArray;
      NastyFunction( dataArray, &TData::ref );
      

      但这听起来像是一个笨拙的解决方案。

      【讨论】:

        猜你喜欢
        • 2010-10-15
        • 1970-01-01
        • 2018-03-24
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多