gpt4 book ai didi

c++在模板函数中初始化大小为 "static * int"的char数组

转载 作者:行者123 更新时间:2023-11-28 00:30:54 25 4
gpt4 key购买 nike

是否可以在模板函数中初始化一个 char 数组,其大小包含在 static * int 中?

.header

static int * array_size;

template <class T>
void f(T value)
{
char buffer[*array_size];
}

或者有没有办法初始化“array_size”,使模板有一个默认值可以使用?

最佳答案

static int * array_size 将不起作用,因为指针内的数据是可修改的,因此无法在编译时确定。

如果您使用的是 C++11,我建议您

constexpr int array_size = 42;

如果您不会使用 C++11,我会使用:

static const int array_size = 42;

在这两种情况下,您都可以像这样创建缓冲区:

char buffer[array_size];

所以没有星号。

如果您无法在编译时找出缓冲区的大小(因此大小取决于运行时的决定),您需要使用动态数组,最好封装到 std::vector :

std::vector<char> bufferVec(myDynamicSize); // Use any integer you want to
char *buffer = &bufferVec[0]; // Use this buffer as a standard array
// with size myDynamicSize OR use the std::vector
// directly (much cleaner)

关于c++在模板函数中初始化大小为 "static * int"的char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com