Как инициализировать массив в классе без использования C ++ 11 Features?

0

Как инициализировать массив внутри класса в c++ без использования списков инициализации (что я считаю функцией c++ 11)? Мой компилятор (VS2013) не поддерживает c++ 11 в полной мере, к сожалению.

  • 0
    эта тема кажется актуальной: stackoverflow.com/questions/161790/…
  • 0
    Вы можете только инициализировать нестатические члены-данные (внутри класса) в C ++ 11.
Показать ещё 2 комментария
Теги:
c++11

1 ответ

1
Лучший ответ

Visual Studio 2013 поддерживает Initializer lists, это означает, что вы можете легко сделать:

--C++11: default initialization using {}
int n{};      --zero initialization: n is initialized to 0
int *p{};     --initialized to nullptr
double d{};   --initialized to 0.0
char s[12]{}; --all 12 chars are initialized to '\0'
string s{};   --same as: string s;
char *p=new char [5]{}; 
vector<int> vi {1,2,3,4,5,6};
vector<double> vd {0.5, 1.33, 2.66}; 
etc

Или другие формы, которые поддерживаются в С++ 11.
если вы не любите его, вы также можете использовать более старые методы, такие как:

Вы можете просто сделать следующее:

int bar [5] = { 10, 20, 30 };

Что создает такой массив:

---------------------------------
|  10  |  20  |  30  |  0  |  0  |
---------------------------------

Вы также можете:

int baz [5] = { }; 

что означает:

-------------------------------
|  0  |  0  |  0  |  0  |  0  |
-------------------------------

или у вас может быть:

int foo [] = { 16, 2, 77, 40, 12 };

что означает:

----------------------------------
|  16  |  2  |  77  |  40  |  12  |
----------------------------------

Если вы имеете дело с классами и их объектами, вы можете просто вызвать свой конструктор следующим образом:

Point aPoint[3] = {
   Point( 3, 3 ),
   Point( 13, 6 ),
   Point( 32, 98 )
};

Все прежние правила применимы и к этой форме. Если вы объявите статический массив, они будут инициализированы на основе их типов по умолчанию (например, int по умолчанию - 0 и т.д.),

Ещё вопросы

Сообщество Overcoder
Наверх
Меню