Cri*_*sti 3 c++ static const private-members
我正在用Qt写一个图像查看器.我试图在头文件中执行以下操作:
class ImageModel
{
private:
const static std::vector<int> mZoomLevels;
}
Run Code Online (Sandbox Code Playgroud)
在源文件中:
int zooms[] = {1,2,3,4,5,6,7,8,9,10};
const std::vector<int> mZoomLevels(zooms.begin(),zooms.end());
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
在缩放中请求成员'begin'是非类类型'int [10]'对于非类类型'int [10]'的缩放中成员'end'的请求
有谁知道如何初始化这个静态const私有成员?
普通数组没有成员函数.我相信你在寻找这个:
int zooms[] = {1,2,3,4,5,6,7,8,9,10};
const std::vector ImageModel::mZoomLevels(zooms, zooms + 10);
Run Code Online (Sandbox Code Playgroud)
数组没有begin和end成员.您可以使用数组名称begin和数组名称以及结尾的长度:
const std::vector mZoomLevels(zooms, zooms+10);
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,您可以使用std::begin和std::end,如下所示:
const std::vector mZoomLevels(std::begin(zooms), std::end(zooms));
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,最好将zooms数组文件声明为静态或将其隐藏在命名空间中,以确保其名称不会"污染"全局命名空间.