2014-09-16 2 views
0

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

+0

эта тема кажется актуальной: http://stackoverflow.com/questions/161790/initialize-a- const-array-in-a-class-initializer-in-c – taocp

+0

Вы можете инициализировать нестатические элементы данных (внутри класса) в C++ 11. –

+0

'std :: array' поддерживается VS2013. – Yakk

ответ

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 

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

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

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

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

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

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

int baz [5] = { }; 

которые переводятся s к:

------------------------------- 
| 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 и т. Д.)

Смежные вопросы