Initializing a static const array of const strings in C++

后端 未结 2 771
深忆病人
深忆病人 2020-12-24 06:03

I am having trouble initializing a constant array of constant strings.

From week.h (showing only relevant parts):

class Week {
  private:
    static          


        
相关标签:
2条回答
  • 2020-12-24 07:08

    First of all, you need an array, not a pointer.

    static const char * const days[] = {"mon", "tue", "wed", "thur",
                                           "fri", "sat", "sun"};
    

    Second of all, you can't initialize that directly inside the class definition. Inside the class definition, leave only this:

    static const char * const days[]; //declaration
    

    Then, in the .cpp file, write the definition

    const char * const Week::days[] = {"mon", "tue", "wed", "thur",
                                           "fri", "sat", "sun"};
    

    Update for C++11 Now you can initialize members directly in the class definition:

    const char * const days[] = {"mon", "tue", "wed", "thur",
                                           "fri", "sat", "sun"};
    
    0 讨论(0)
  • 2020-12-24 07:08

    For C++11, you can make the initialisation inside your class declaration, in your .h file. However, you will need to include constexpr in your .cpp file too. Example for the case above:

    In your week.h file, write:

    class Week {
        public:        
           static const constexpr char* const days[] = 
               { "mon", "tue", "wed", "thur","fri", "sat", "sun" };
    };
    

    In your week.cpp file, write somewhere:

    constexpr const char* const Week::days[];
    

    Make sure you enable C++11, e.g. compile with

    g++ -std=c++11 week.cpp

    0 讨论(0)
提交回复
热议问题