gpt4 book ai didi

c++ - 将 "pointer to pointer"传递给模板函数

转载 作者:太空狗 更新时间:2023-10-29 19:47:59 24 4
gpt4 key购买 nike

我有一个将内存分配给指针的函数,如下所示:

   void initializeImageBuffer(unsigned char **image, int w, int h)
{
if (*image != NULL)
delete[] *image;
*image = new unsigned char[w * h];
}

现在我想使用函数模板概括参数类型(unsigned char/int/double)。这就是我所做的:

 template<typename T, int, int>
void initializeImageBuffer(T **image, int w, int h)
{
if (*image != NULL)
delete[] *image;
*image = new T[w * h];
}

但是使用如下函数时出现错误:

    unsigned char* image;
initializeImageBuffer(&image, 200, 200);

“没有使用这些参数类型重载函数的实例。参数类型是 (unsigned char**, int, int)。”

最佳答案

template<typename T, int, int>

在这里您声明您的模板具有三个参数,类型 T 和两个未命名的 int。由于无法在调用站点推断出 int 的值,因此您需要显式提供它们以及 T,因为您只能提供模板参数从左到右:

initializeImageBuffer<unsigned char, 42, 42>(&image, 200, 200);

但是,您最可能想要的只是删除这些 int,它们在这里绝对没有用。

template<typename T>
void initializeImageBuffer(T **image, int w, int h)

关于c++ - 将 "pointer to pointer"传递给模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37562239/

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