2017-04-25 67 views
0

我需要有arraydouble鏈接到某些對象中的成員變量。可以有多個對象,但鏈接到的成員變量始終爲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值,我想容易地使對應的成員變量在foobar改變。我想arrayValues是任何長度,並從任何成員變量集合構造。

我正在考慮有第二個arraypointer,這將符合arrayValues。例如:

double* linkArray[2] = {&foo.x, &bar.y}; 

然後,每當我在arrayValues改變一個值,我在linkArray改變相應的值:

arrayValues[i] = 4.4; 
*linkArray[i] = arrayValues[i]; 

回答

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 
+0

我的意思是,我需要提供一個''array'和double'成員變量之間的鏈接。該數組是外部優化算法的輸入,所以我無法更改其類型。 – murrdpirate