Список инициализатора совокупного элемента не поддерживается? - PullRequest
1 голос
/ 25 августа 2011
struct bar { int x; };

struct qux
{
    static const int foo[3] = { 1, 2, 3 }; // Error

    static const bar baz = { 0 }; // Error
};

Visual Studio 2008; Стандарт;

syntax error : '{'

1 Ответ

4 голосов
/ 25 августа 2011

Только целые статические неагрегированные члены могут быть инициализированы внутри класса.Все остальные статические члены (совокупные или иные) должны быть инициализированы вне класса.

//tag.h

struct tag
{
    static const int foo[3];  //aggregate
    static const bar baz;    //aggregate
    static const std::string s; //non-aggregate (non-integral type)
    static const int x = 10; //ok : non-aggregate (integral type)
};

//tag.cpp

const int tag::foo[3] = { 1, 2, 3 }; //ok
const bar tag::baz = { 0 }; //ok
const std::string s = "example"; //ok
const int tag::x; //definition - if you want to take its address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...