Как инициализировать массив внутри класса в C++ без использования списков инициализации (что, я думаю, является функцией C++ 11)? Мой компилятор (VS2013) не поддерживает C++ 11 в полной мере, к сожалению.Как инициализировать массив внутри класса без использования возможностей C++ 11?
0
A
ответ
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 и т. Д.)
Смежные вопросы
- 1. Как инициализировать массив 'int' как член класса в C++ 11?
- 2. Инициализировать переменные-члены класса в C++ 11
- 3. Проверка возможностей C++ 11
- 4. Как инициализировать массив символов внутри класса?
- 5. Альтернативный способ инициализировать массив в файле заголовка без C++ 11
- 6. Как инициализировать трехмерный массив символов без использования указателей в c
- 7. Инициализировать массив моего класса C++
- 8. Как инициализировать массив «NotNull» класса в C# без цикла?
- 9. C инициализировать массив внутри структуры
- 10. Инициализировать переменную внутри класса без конструктора
- 11. Инициализировать массив строк в Dev C внутри конструктора класса
- 12. Как инициализировать собственный указатель и массив C++ 11 в классе?
- 13. Как инициализировать массив с динамическим размером в стандарте C++ 11?
- 14. Как инициализировать массив без знака?
- 15. Как инициализировать массив внутри словаря?
- 16. Как инициализировать массив внутри цикла
- 17. C++ <11: Инициализировать статический член класса const
- 18. Как инициализировать массив без ошибок?
- 19. Как инициализировать массив без использования цикла for в Go?
- 20. Как инициализировать 2D-массив с переменным размером без использования указателей?
- 21. Как инициализировать hashmap на уровне класса без использования статического блока
- 22. Инициализировать массив без нулей
- 23. Как инициализировать объект внутри инициализатора списка без использования анонимных объектов?
- 24. Как создать и инициализировать статический массив readonly структуры внутри класса?
- 25. Как инициализировать и использовать массив другого класса в классе? (C++)
- 26. Final без полиморфного класса в C++ 11
- 27. C++ 11: Как инициализировать массив указателей некоторого класса с помощью nullptr?
- 28. Декларация класса C++ без использования его конструктора
- 29. Как инициализировать массив члена класса с 0
- 30. Как инициализировать вектор объектов в C++ 11
эта тема кажется актуальной: http://stackoverflow.com/questions/161790/initialize-a- const-array-in-a-class-initializer-in-c – taocp
Вы можете инициализировать нестатические элементы данных (внутри класса) в C++ 11. –
'std :: array' поддерживается VS2013. – Yakk