我需要array
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};
。
例如:
arrayValues
现在,当我更改foo
值时,我想轻松地在bar
或arrayValues
中更改相应的成员变量。我希望array
可以是任何长度,并且可以从任何成员变量集构造。
我在考虑获得pointer
的{{1}},这与arrayValues
相对应。例如:
double* linkArray[2] = {&foo.x, &bar.y};
然后每当我更改arrayValues
中的值时,我都会更改linkArray
中的相应值:
arrayValues[i] = 4.4;
*linkArray[i] = arrayValues[i];
答案 0 :(得分:0)
我需要在某些对象中有一个指向成员变量的双链接数组。
你做不到。
最接近的是使用std::reference<double>
数组。
示例:
#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;
}
输出
6.4
6.4