2014-01-10 83 views
2
class A 
{ 
    float m_Period; // a1 
    float m_Scale; // a2 
}; 

我可以有指針這樣的數據成員:陣列指針數據成員

float A::*pFloat; 

對於週期原因手柄構件的我需要這樣的指針的陣列。這個怎麼做。

+0

爲什麼不把成員'a1','a2'等等放入一個數組中,'a'? –

回答

3

要麼std::vector<float A::*> pFloats;要麼是,如果需要編譯器計數初始化程序的數量,需要靜態初始化,float A::*pFloat[] = {...};

5
typedef float A::*member_t; 

現在,你可以聲明一個數組或member_tvector

+1

你不需要typedef。 (根據使用情況,它可能會使事情變得更加清晰,但是這樣的東西像'typedef float * FloatPtr'這樣的東西。我不是很喜歡的東西。) –

+0

沒錯,並沒有使用typedef「stokes of」std: :vector '。根據您的受衆,類型的複雜程度以及您在代碼中重複類型的次數,您可以決定是否要爲其設置別名。 –

+0

是的。這是一個非常重要的判斷。聲明不需要括號的事實使我傾向於不使用typedef,因爲您確實需要知道它是指向A成員的指針。但我可能傾向於使用這樣的typedef少得多相對於其它的;如果我需要像你這樣的類型,我更有可能以完全避免類型的方式重寫代碼。 –