[英]POD type initialization using initialization list does not work
我已经定义了一个 POD 类型如下:
template<typename kernelEntryT, size_t kernelRowSize, size_t kernelColSize>
class ImageProcessing::Kernel {
kernelEntryT kernelMatrix[kernelRowSize][kernelColSize];
};
int main(){
ImageProcessing::Kernel<int,3,3> k = {{0,0,0},{0,1,0},{0,0,0}};
}
它不编译,并告诉我:
error: could not convert ‘{{0, 0, 0}, {0, 1, 0}, {0, 0, 0}}’ from ‘<brace-enclosed initializer list>’ to ‘ImageProcessing::Kernel<int, 3ul, 3ul>’
ImageProcessing::Kernel<int,3,3> k = {{0,0,0},{0,1,0},{0,0,0}};
编辑:测试代码
您缺少一组大括号(数据成员是单个数组)并且您需要将数据成员设为公开,因为聚合不能具有私有成员或受保护成员。
这是一个简化的工作示例:
#include <cstddef> // for std::size_t
template<typename T, std::size_t N, std::size_t M>
class Kernel {
public:
T kernelMatrix[N][M];
};
int main(){
Kernel<int,3,3> k = { {{0,0,0}, {0,1,0}, {0,0,0}} };
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.