C++ 将数组值链接到对象成员变量

C++ 将数组值链接到对象成员变量,c++,arrays,hyperlink,C++,Arrays,Hyperlink,我需要有一个数组ofdouble链接到某些对象中的成员变量。可以有多个对象,但链接到的成员变量始终是double 例如: Foo foo; foo.x = 3.2; Bar bar; bar.y = 1.1; bar.z = 2.0; double arrayValues[2] = {foo.x, bar.y}; double* linkArray[2] = {&foo.x, &bar.y}; 现在,当我更改arrayValues值时,我希望轻松地使foo或bar中的相应

我需要有一个
数组
of
double
链接到某些对象中的成员变量。可以有多个对象,但链接到的成员变量始终是
double

例如:

Foo foo;
foo.x = 3.2;

Bar bar;
bar.y = 1.1;
bar.z = 2.0;

double arrayValues[2] = {foo.x, bar.y};
double* linkArray[2] = {&foo.x, &bar.y};
现在,当我更改
arrayValues
值时,我希望轻松地使
foo
bar
中的相应成员变量进行更改。我希望
arrayValues
为任意长度,并由任意一组成员变量构成

我在考虑第二个
数组
指针
,它将与
数组值
相对应。例如:

Foo foo;
foo.x = 3.2;

Bar bar;
bar.y = 1.1;
bar.z = 2.0;

double arrayValues[2] = {foo.x, bar.y};
double* linkArray[2] = {&foo.x, &bar.y};
然后,每当我更改
arrayValues
中的值时,我都会更改
linkArray
中的相应值:

arrayValues[i] = 4.4;
*linkArray[i] = arrayValues[i];
我需要在一些对象中有一个双链接到成员变量的数组

你不能那样做

最接近这一点的是使用
std::reference
的数组

例如:

#include <iostream>
#include <functional>

struct Foo { double x; };
struct Bar { double y; double z; };

int main()
{
   Foo foo;
   foo.x = 3.2;

   Bar bar;
   bar.y = 1.1;
   bar.z = 2.0;

   std::reference_wrapper<double> arrayValues[] = {{foo.x}, {bar.y}};
   arrayValues[0] *= 2;
   std::cout << arrayValues[0] << std::endl;
   std::cout << foo.x << std::endl;
}

我的意思是,我需要在
double
array
和成员变量之间提供链接。数组是外部优化算法的输入,因此我无法更改其类型。