是否可以在结构中有一个指向数组的成员指针?我想做类似下面的事情:
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);
}
答案 0 :(得分:0)
指向结构中数组的指针与指向数组的指针没有什么不同。
如果你想要的是一个“指针”,给定一个对象和一个偏移量,返回该对象的某个成员数组中相应元素的值,然后你可以把它写成“getter”函数。
答案 1 :(得分:0)
如果您愿意,并且编译器支持,您可以执行此操作。但正如@Lundin所说,这几乎总是一个坏主意。指向成员的指针是一种在非常罕见的情况下可能有用的功能。 IMHO指向数组成员的指针以及指向数组的指针永远不会有用(因为总是使用指向第一个成员的指针)。