2015-01-04 160 views
0

我有粒子陣列與粒子陣列[0]

class Variable 
{ 
public:  
    double lb; 
} 

class Variables 
{ 
public:  
    int numberOfVariables; 
    Variable **var; 
} 

現在

cout << var[0]->lb; 

給了我預期的行爲,但

cout << var->s; 

不起作用。事實上,它給了我編譯錯誤:「請求成員'..'在'..'這是非類類型」。我認爲var和var [0]可以互換使用,而我的調試器的確可以讓我這樣做。到底是怎麼回事?

我有一種情況,我需要一個多態對象,可以採取單個var元素或var的數組。什麼是最好的方式來實現呢?

+3

我讀了兩遍,但在var-> s中是什麼? – Michiel

+3

「我認爲var和var [0]可以互換使用」 - 這是你的問題。你以爲錯了。在C++語言中''var'絕不等於'var [0]'(假設內置'[]') – AnT

+0

',我的調試器的確能讓我這樣做。「一個調試器不是語言規範。 – PaulMcKenzie

回答

0

在C++中,var[i]相當於*(var + i)。所以varvar[0]不一樣。 *varvar[0]相同。 var只是一個指向數組開始的指針,您必須對指針進行解引用。看指針。

對於第二個問題,請查看std::vector。它動態地改變大小,併爲你處理所有的低級內存管理操作。