是否可以在结构中有一个指向数组的成员指针?

时间:2011-03-29 09:35:29

标签: c++

是否可以在结构中有一个指向数组的成员指针?我想做类似下面的事情:

struct A  
{  
   int array[10];  
   int sizeOfArray;  
};  

template<int size>
class B  
{  

public:  

   B(int (A::*arrayLocation)[size],  
     int A::*arraySize):  
     memberArray(arrayLocation),  
     memberArraySize(arraySize))  
  {  
  }  

   void setValue(A* pobj1)  
   {  
      for(int i = 0; i < pobj1->*memberArraySize; i++)  
      {  
         (pobj1->*memberArray)[i] = 1;  
      }  
   }  


private:  
  int (A::*memberArray)[size];  
  int A::*arraySize;  
};  

int main()  
{  
    A obj2;
    B<10> obj1(&A::array, &A::sizeOfArray);  
    obj1.setValue(&obj2);
}

2 个答案:

答案 0 :(得分:0)

指向结构中数组的指针与指向数组的指针没有什么不同。

如果你想要的是一个“指针”,给定一个对象和一个偏移量,返回该对象的某个成员数组中相应元素的值,然后你可以把它写成“getter”函数。

答案 1 :(得分:0)

如果您愿意,并且编译器支持,您可以执行此操作。但正如@Lundin所说,这几乎总是一个坏主意。指向成员的指针是一种在非常罕见的情况下可能有用的功能。 IMHO指向数组成员的指针以及指向数组的指针永远不会有用(因为总是使用指向第一个成员的指针)。