【发布时间】:2018-10-24 05:55:10
【问题描述】:
我有这个代码:
class myClass
{
constexpr int x = 4;
};
在 Visual Studio 2015 上,我收到此错误:
'constexpr' is not valid here
为什么我会收到此错误?我想要一个可以在头文件中初始化的 const 静态变量。
下一步我想将我的类更改为模板,但这个常量与类的类型无关。
【问题讨论】:
-
“我想要一个 const 静态变量...” 那为什么不声明它
static? -
@CinCout 我想既然是常量表达式,那就没必要定义成静态的了。 const 表达式如何可以是非静态的?
-
@mans 在全球范围内。在全局范围和类中它们具有不同的含义
-
@Swift 有什么区别?你能详细说明一下吗?在类作用域中,变量如何可以是 const 而不是 static?
-
它将是 const ,但对于类实例不是唯一的,它仍然是实例的一部分并且需要上下文。当实例被构造并被初始化时,它变为 const(可以在构造函数的初始化列表中设置)。静态成员(无论是否为 const)在程序启动时的某个时刻被创建和初始化(此时未定义,只是保证在创建任何对象之前被初始化)。一个 const 静态成员之后不能更改,仅此而已,它仍然只创建一次。对于全局范围的静态关键字,只需指定 id 的本地链接。
标签: c++ c++11 visual-studio-2015 constexpr