我想要一个带有非整数常量的头文件,例如一个类.注意常数也并不需要是一个编译时间常数.
static const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)
这编译但不可取,因为每个编译单元现在都有自己的Ten副本.
const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)
这将编译但会因为多重定义的Ten的链接器错误而失败.
constexpr std::string Ten = "10"s;
Run Code Online (Sandbox Code Playgroud)
这可以工作,但前提是字符串构造函数也是constexpr.它会但是我不能指望每个非整数常量都有一个constexpr构造函数......或者我可以吗?
extern const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但我担心如果我错误地呼吸,我会收到链接器错误.
inline const std::string Ten( ) { return "10"; }
Run Code Online (Sandbox Code Playgroud)
这有我想要的一切,除了干净的语法.另外,现在我必须将常量称为函数调用Ten().
inline const std::string = "10";
Run Code Online (Sandbox Code Playgroud)
这似乎是理想的解决方案.当然inline,标准不允许变量.
c ×1
c++ ×1
c++-faq ×1
c++11 ×1
constants ×1
declaration ×1
definition ×1
inline ×1
terminology ×1