const int,成员数组大小

const int, member array size

我的代码基本上是:

class myclass : public singleton<myclass> {
    public:
        myclass();
    private:
        const float myfloat = 6000.0f;
        const int sz_arr = (int)myfloat;

        int arr[sz_arr];  // compiler complains about this line
};

需要在编译时创建arrarr 的大小在编译时已知!应该根据 myfloat 值计算。如何实现?此外,myclass 是单例,只会创建它的一个实例。

首先,sz_arr不能用来指定数组的大小,需要做成static。并将 myfloat 标记为 constexpr 以使其在编译时已知(对于 sz_arr 也更好)。

class myclass : public singleton<myclass> {
    public:
        myclass();
    private:
        constexpr static float myfloat = 6000.0f;
        constexpr static int sz_arr = myfloat; // implicit conversion is enough

        int arr[sz_arr]; 
};