【发布时间】:2014-04-10 11:59:08
【问题描述】:
是否可以在模板函数中初始化 char 数组,其大小包含在静态 * int 中?
.header
static int * array_size;
template <class T>
void f(T value)
{
char buffer[*array_size];
}
或者有没有办法初始化“array_size”,让模板有一个默认值可以使用?
【问题讨论】:
-
为什么要在这里使用指针?
[]中的表达式必须是常量表达式,因此不能使用可修改类型。static constexpr int const* array_size = &my_size;(其中my_size是例如constexpr int)是可能的,但不确定你为什么要使用它。 -
我正在尝试拥有一个可以更改其大小的缓冲区
-
数组大小必须在编译时知道。您可以使用
std::vector代替数组。
标签: c++ arrays templates pointers static