2012-02-27 118 views
0

我想爲一個項目做這樣的事情......C++模板,靜態分配的數組

template <class N> class MyClass { float properties[N]; };

反正在C++中做到這一點?

+1

我不明白你期待什麼。由「一些隨機類」索引的浮點數組? - 我會說不,你不能這樣做(但他們我沒有達到最新和最好的標準;-)。我會說你需要爲此創建自己的數據結構,而不是依賴本地數組。 – John3136 2012-02-27 01:40:19

+0

通常我會但是這是一點性能密集 – 2012-02-27 01:56:25

回答

5

你需要什麼叫模板參數:

template <size_t N> class MyClass { float properties[N]; }; 
     //^^^^^^ note this 

現在你可以實例化這個類模板,傳遞任何非負積分值作爲模板參數。例如,

MyClass<10> c1; //N=10 
MyClass<100> c1; //N=100 

您也可以通過常量表達式爲:

const size_t size = 200; 
MyClass<size> c2; //N=200 
+0

謝謝!多數民衆贊成什麼我需要的標題,但現在我不能讓.cpp文件正確編譯,當我嘗試並把類中的任何功能MSVC告訴我「使用類模板需要模板參數列表」。任何想法爲什麼? – 2012-02-27 01:55:26

+0

@DavidCarpenter:我怎麼知道'.cpp'文件是什麼?它包含什麼? – Nawaz 2012-02-27 02:14:02

+0

MyClass的成員函數的實現,就像構造函數一樣,但是visual studio用這個錯誤突出顯示它們 – 2012-02-27 02:15:22