我正在查找如何在一个课程中添加静态consts。我注意到很多例子都在显示......
(我们会公开表示,不管怎样)
test.h
class A {
public:
static const int HELLO_WORLD=1;
};
但是,我想定义一个字符串,这不会编译。
test.h
class A {
public:
static const std::string HELLO_WORLD="WORLD HELLO";
};
经过一些研究,我发现非英特尔是不同的。我不得不在标题中声明它们,但在cpp文件中设置它们的值。
test.h
class A {
public:
static const std::string HELLO_WORLD;
};
TEST.CPP
#include "test.h"
const std::string A:HELLO_WORLD = "WORLD HELLO";
我只能找到解决方法的答案,但实际上并不是为什么它需要像那样...我的问题是为什么它必须像那样,为什么允许声明+设置?
在c ++ 11 / c ++ 14中还有更好的方法吗? (不妨问)
答案 0 :(得分:4)
Stroustrup:“在C ++ 98中,只有整数类型的静态const成员可以在类中初始化,初始化器必须是一个常量表达式。这些限制确保我们可以在编译时进行初始化-time“。
试试这个:
class A {
public:
constexpr static const char *HELLO_WORLD="WORLD HELLO";
};