2014-10-09 24 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