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 h) { if (*image != NulL) delete[] *image; *image = new T[w * h]; }
但使用以下功能时出错:
unsigned char* image; initializeImageBuffer(&image,200,200);
“这些参数类型没有重载函数的实例.参数类型是(unsigned char **,int).”
解决方法template<typename T,int>
在这里,您声明您的模板有三个参数,类型T和两个未命名的int.由于无法在调用站点推断出int的值,因此您需要明确地提供它们以及T,因为您只能从左到右提供模板参数:
initializeImageBuffer<unsigned char,42,42>(&image,200);
但是,你最想要的只是放弃这些内容,它们在这里绝对没用.
template<typename T>voID initializeImageBuffer(T **image,int h)总结
以上是内存溢出为你收集整理的c – 将“指针指针”传递给模板函数全部内容,希望文章能够帮你解决c – 将“指针指针”传递给模板函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)