无法将带有 const 参数的函数转换为函数指针?
Can't convert a function with a const parameter to a function pointer?
即使明确提到函数指针中的参数是const,它似乎也无法将函数转换为此类型:
#include <iostream>
template <typename T>
class Image{};
template <typename TPixel>
static void
FillImage(const Image<TPixel>* const image){}
//FillImage(Image<TPixel>* const image){} // Replacing the above line with this one compiles fine
int main()
{
typedef Image<float> ImageType;
ImageType* image = new ImageType;
void (*autoFunctionPointer)(const decltype(image)) = FillImage;
autoFunctionPointer(image);
}
谁能解释一下如何让它进行转换?
const
适用于指针。
因此,const decltype(image)
等同于ImageType* const
而不是const ImageType*
如果将image
更改为
const ImageType* image = new ImageType;
FillImage()
的第一个版本按预期工作。
要获得const ImageType*
您可以使用 std::remove_pointer
#include <type_traits>
...
void (*autoFunctionPointer)(const std::remove_pointer<decltype(image)>::type *) = FillImage;
FillImage
是一个模板,而不是一个函数。尝试一些FillImage<float>
的变体。
相关文章:
- 如何使用Rcpp将R函数转换为C++函数
- C++函数转换为 C# 函数
- 将 C 函数转换为 C++ 以检查数字是否有效
- C++:从重载函数转换为 std::function
- 将 C 函数转换为C++语言
- C++隐式构造函数转换,后跟类型向上转换
- 将 lambda 函数转换为具有混合 lambda 引入器和参数列表的函子结构
- 通过 Boost Python 将 Python 函数转换为 C++,用作回调
- 如何将 MATLAB 图像处理库内置函数转换为 MATLAB 编码器代码生成不支持的 C++?
- 如何将函数转换为 lambda 函数
- 自定义函数转换错误?
- 将 C# 哈希函数转换为C++
- 将 lambda 函数转换为另一个编译单元中的普通函数会缩短编译时间吗?
- 加快 R 性能或将 R 函数转换为C++函数
- 将成员函数转换为指向成员函数的指针
- 将MATLAB炒作函数转换为C
- Rcpp - 用二进制函数转换数字向量?
- C lambda函数转换误差
- 此语法中的构造函数转换错误
- 将函数转换为find_if lambda