2012-02-27 80 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