C ++ 11: Как инициализировать приватный член stati c const? - PullRequest
0 голосов
/ 23 апреля 2020

Посмотрите на этот демонстрационный код:

enum class Solid {gold, silver, wood};
enum class Liquid {bier, wine, oil};
enum class Gas {air, elio, argon};

class P {
private :
    struct Set {
        Solid   solid;
        Liquid  liquid;
        Gas     gas;
    };
    static const Set set[];
};

const P::set = {
        {gold, wine, air}
};

GCG скажите мне:

error: ‘const P::Set P::set []’ is private within this context
 const P::set = {
          ^~~

Что не так? Да, я хотел бы инициализировать приватный член класса stati c, не входящий в определение класса.

Кто-нибудь может объяснить мне, как это сделать? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Этот код работает должным образом:

enum class Solid {gold, silver, wook};
enum class Liquid{bier, wine, oil};
enum class Gas{air, elio, argon};

class P {
private:
    struct Set {
        Solid solid;
        Liquid liquid;
        Gas gas;
    };
    static const Set set[];
};

const P::Set P::set[]{ Solid::gold, Liquid::wine, Gas::air };

Вы забыли идентификатор типа P::Set в инициализации, а также идентификаторы классов перечислений.

0 голосов
/ 23 апреля 2020

В вашем коде есть куча проблем:

  • вы не указали тип P::set в его определении
  • , который вы использовали enum class, но не сделали качество перечислимых значений (gold, et c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...