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中的相应
数组
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
中的相应成员变量进行更改。我希望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
和成员变量之间提供链接。数组是外部优化算法的输入,因此我无法更改其类型。