static string constants in class vs namespace for constants [c++]

前端 未结 4 468
情歌与酒
情歌与酒 2020-12-14 02:17

I want to declare string constants that will be used across various classes in the project. I am considering two alternatives

Option 1:

<         


        
4条回答
  •  眼角桃花
    2020-12-14 02:52

    Update 2 years later:

    Every global accessible by more than one source file should be wrapped in an inline function so the linker shares the object between the files, and the program initializes it properly.

    inline std::string const &const1() {
        static std::string ret = "hello, world!";
        return ret;
    }
    

    The inline function is implicitly extern and may be wrapped in a named namespace or a class, if you like. (But don't use a class just to hold static members, as namespaces are better for that. And don't use an anonymous namespace as that would defeat the linker, and each source would see a different std::string object.)

提交回复
热议问题