2014-10-09 37 views
-1

假設我有一個包含數組的類。在編譯時,我知道陣列將有多大。我如何使用不同大小的數組創建這個類的實例?編譯時不同的靜態數組大小

class MyClass { 
    private: 
     const unsigned size; 
     int data[size]; 
    /* More stuff here... */ 
} 

MyClass c1(4); /* Array size of 4 */ 
MyClass c2(16); /* Array size of 16 */ 

我不能使用新建/刪除,因爲動態內存不存在。我也不能使用模板,因爲我主要針對嵌入式系統。這種事情甚至可能沒有模板?

+3

請原諒我的無知,但什麼是「針對嵌入式平臺」有沒有能夠使用模板嗎? – Borgleader 2014-10-09 19:38:36

+0

@Borgleader,幾乎沒有什麼。 – Griwes 2014-10-09 19:39:37

+1

@Borgleader:*有*一個叫做「Embedded C++」的東西,它不包含模板(或名稱空間,或者C++的其他部分)。雖然它從來沒有得到太多的普及,而且AFAIK幾年來一直是一個死亡問題。 – 2014-10-09 20:02:06

回答

1

你可以嘗試使用模板,如下面的例子:

template <int size> 
class MyClass { 
    private: 
     int data[size]; 
     /* More stuff here... */ 
}; 

MyClass<4> c1 ; /* Array size of 4 */ 
MyClass<16> c2; /* Array size of 16 */ 
+0

'mSize'比無用的糟糕,因爲模板參數始終可用 – 2014-10-09 21:27:08

+0

確實如此,我這樣做是爲了與原始代碼保持一致,但在這種情況下它沒有任何意義。 – lisu 2014-10-09 21:34:05

+0

這是否會爲類函數生成單獨的代碼,如'template '會創建不同類型的類? – thndrwrks 2014-10-09 21:44:40