C++ 在typedef中使用const int类成员?

C++ 在typedef中使用const int类成员?,c++,c++11,C++,C++11,我在使用C++11编译时遇到了以下问题: class A{ const uint32_t X = 5; typedef std::array<B, X> ARRAY; }; A类{ 常数32_t X=5; typedef std::数组; }; 我得到了错误信息 非静态数据成员的使用无效 我不想让它成为静态的,因为我有一些动态链接问题,我不想使用初始化列表,因为我希望这些“神奇的数字”在标题的顶部非常清晰。非常老式的方法是定义x5没有人再使用此功能了,除非他们想

我在使用C++11编译时遇到了以下问题:

class A{
    const uint32_t X = 5;
    typedef std::array<B, X> ARRAY;

};
A类{
常数32_t X=5;
typedef std::数组;
};
我得到了错误信息

非静态数据成员的使用无效

我不想让它成为静态的,因为我有一些动态链接问题,我不想使用初始化列表,因为我希望这些“神奇的数字”在标题的顶部非常清晰。

非常老式的方法是定义x5没有人再使用此功能了,除非他们想在代码审阅会话中受到批评。

非常老式的方法是使用
enum{X=5}
实现这一点的现代方法是使用
静态constexpr uint32\u t X=5

所有这些方法都确保了
X
是编译时可计算的。

非常老式的方法是定义x5没有人再使用此功能了,除非他们想在代码审阅会话中受到批评。

非常老式的方法是使用
enum{X=5}
实现这一点的现代方法是使用
静态constexpr uint32\u t X=5


所有这些方法都确保
X
在编译时是可计算的。

另一种方法是

class A{
    enum Array_Size : uint32_t { X = 5 };
    typedef std::array<B, X> ARRAY;

};
A类{
枚举数组_大小:uint32_t{X=5};
typedef std::数组;
};

另一种方法是

class A{
    enum Array_Size : uint32_t { X = 5 };
    typedef std::array<B, X> ARRAY;

};
A类{
枚举数组_大小:uint32_t{X=5};
typedef std::数组;
};

static constexpr
我不想使用static,因为这是由使用静态和动态链接时出现的错误造成的……即使你让它工作,如果它是const,它对每个实例都是一样的。只是浪费了包含值5的空间。它应该是静态的。也许你应该问一下链接问题,而不是问你认为它的解决方案是什么,这不是一个很好的解决方案。@PiotrSkotnicki,只需解决一些问题:P
static constexpr
我不希望使用static,因为这是由于使用静态和动态链接导致的错误造成的……即使你让它工作起来,如果它是const,它对每个实例都是一样的。只是浪费了包含值5的空间。它应该是静态的。也许你应该问一下链接问题,而不是问你认为它的解决方案是什么,这不是一个很好的解决方案。@PiotrSkotnicki,只要解决一件事:Pa
constexpr
成员应该是
静态的
,否?一些不太旧的MS Visual Studio版本不支持
constexpr
;如果需要与这些版本兼容,可以使用
const
constepr
成员应该是
static
,不是吗?一些不太旧的MS Visual Studio版本不支持
constepr
;如果需要与这些版本兼容,可以使用
const
。您不需要为
enum
编任何名称。简单的语法
enum:uint32{…}
就足够了。您不需要为
enum
编任何名称。简单的语法
enum:uint32{…}
就足够了。