Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xvivax
1 / 1 / 0
Регистрация: 07.09.2013
Сообщений: 25
#1

Инициализация массива через конструктор - C++

15.02.2014, 08:55. Просмотров 540. Ответов 16
Метки нет (Все метки)

Есть код :
C++
1
2
3
4
5
6
7
class test
{
private:
    int x[2];
public:
    test() : x{ 0, 0 } {}
};
Не понимаю почему не работает? Кому не тяжело обясните как обявляется одномерныи и двумерныи масив через конструктор. Зарание Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 08:55     Инициализация массива через конструктор
Посмотрите здесь:

Инициализация массива через конструктор. Вопрос. - C++
Всем привет. Есть скудная вытяжка из методички: "Массив объектов В случае, когда возникает необходимость иметь несколько объектов...

Инициализация массива объектов через конструктор - C++
class some { public: some(){} some(int b):a(b){} void Set(int b){a=b;} private: int a; };

Инициализация объектов через конструктор(объясните в чём ошибка) - C++
Вот программа! #include <iostream> #include <string> using namespace std; class GradeBook { public: GradeBook(); ...

Конструктор и Деструктор (инициализация массивов) - C++
Стал вопрос по инициализации массивов (внутри класса) в конструкторе, но ни методичка, ни гугль явного ответа не дали, возможно массив...

Ругается new при создании динамического массива через перегруженный конструктор - C++
Перегрузил конструктор: class Library { public: Library(void) //конструктор библиотеки без заданного типа { ...

Инициализация указателя через функцию - C++
#include <iostream> using namespace std; void inic(int * k); int main() { int * k = 0; inic(k); cout << k; } void...

Инициализация структуры через точку - C++
Доброго юзаю MVS2012 Проблема есть структура struct ST { int a; int b; };

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
271 / 238 / 21
Регистрация: 29.05.2012
Сообщений: 889
15.02.2014, 09:02     Инициализация массива через конструктор #2
C++
1
2
3
4
5
6
7
8
9
10
11
class test
{
private:
    int x[2];
public:
    test()
    {
        x[0] = 0;
        x[1] = 0;
    }
};
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.02.2014, 09:47     Инициализация массива через конструктор #3
Цитата Сообщение от xvivax Посмотреть сообщение
Не понимаю почему не работает?
Компилятор должен поддерживать С++11(List-initialization), тогда будет работаь.
xvivax
1 / 1 / 0
Регистрация: 07.09.2013
Сообщений: 25
15.02.2014, 10:37  [ТС]     Инициализация массива через конструктор #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Компилятор должен поддерживать С++11(List-initialization), тогда будет работаь.
Как узнать или компилятор поддерживает? У меня visual studio 2013 разве в нем не должен стоять самыи новыи компилятор?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.02.2014, 11:05     Инициализация массива через конструктор #5
По идее, в 2013 струдии должно работать. Тут, в списке, есть: http://msdn.microsoft.com/en-us/library/hh567368.aspx
А какую ошибку пишет?
xvivax
1 / 1 / 0
Регистрация: 07.09.2013
Сообщений: 25
15.02.2014, 11:15  [ТС]     Инициализация массива через конструктор #6
Цитата Сообщение от alsav22 Посмотреть сообщение
По идее, в 2013 струдии должно работать. Тут, в списке, есть: http://msdn.microsoft.com/en-us/library/hh567368.aspx
А какую ошибку пишет?
Код
Error	1	error C2536: 'test::test::x' : cannot specify explicit initializer for arrays
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.02.2014, 11:58     Инициализация массива через конструктор #7
Проверил, в 13-й студии не работает. Значит там так реализация сделана. Если использовать list-initialization не в конструктре, то работает (значит поддержка есть). В mingw (4.8) работает и в конструкторе.
Миниатюры
Инициализация массива через конструктор  
xvivax
1 / 1 / 0
Регистрация: 07.09.2013
Сообщений: 25
15.02.2014, 12:16  [ТС]     Инициализация массива через конструктор #8
Понятно, значет все дело в компиляторе. Буду способ zvoronz использовать. Спасибо за помощч
programina
15.02.2014, 12:22
  #9

Не по теме:


C++
#include <iostream>
using namespace std;
 
class C
{
public:
    int a[3][3];
 
    C(int *x)
    {
        for(int i=0; i<3; i++)
            for(int j=0; j<3; j++)
            {
                this->a[i][j] = x[3*i+j];
 
            }
    }
 
};
 
int main()
{
    int a[3][3] = {
        {1,2,3},
        {4,5,6},
        {7,8,9}
    };
 
    C c(*a);
 
    for(int i = 0; i < 3; i ++)
        for(int j = 0; j < 3; j ++)
            cout << c.a[i][j] << endl;
}

retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
15.02.2014, 12:32     Инициализация массива через конструктор #10
попробуй проверь такой вариант
C++
1
2
3
4
5
class test
{
private:
    int x[2]{ 0, 0 };
};
мб 13 студия поддерживает
xvivax
1 / 1 / 0
Регистрация: 07.09.2013
Сообщений: 25
15.02.2014, 14:53  [ТС]     Инициализация массива через конструктор #11
Цитата Сообщение от retmas Посмотреть сообщение
попробуй проверь такой вариант
Неа, неработает ;/
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
15.02.2014, 15:28     Инициализация массива через конструктор #12
Цитата Сообщение от xvivax Посмотреть сообщение
Неа, неработает ;/
Надо попробовать включить поддержку C++11
xvivax
1 / 1 / 0
Регистрация: 07.09.2013
Сообщений: 25
15.02.2014, 15:47  [ТС]     Инициализация массива через конструктор #13
Цитата Сообщение от programina Посмотреть сообщение
Надо попробовать включить поддержку C++11
Знать бы каким образом.. Если кто знает подскажите
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.02.2014, 20:13     Инициализация массива через конструктор #14
Цитата Сообщение от programina Посмотреть сообщение
Надо попробовать включить поддержку C++11
Включено там всё, не mingw.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
15.02.2014, 21:05     Инициализация массива через конструктор #15
Цитата Сообщение от xvivax Посмотреть сообщение
Неа, неработает ;/
Цитата Сообщение от programina Посмотреть сообщение
Надо попробовать включить поддержку C++11
Цитата Сообщение от alsav22 Посмотреть сообщение
Включено там всё
Значит баг компилятора. Попробуйте другой компилятор (например MinGW)
alsav22
15.02.2014, 21:22
  #16

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Значит баг компилятора.
При чём здесь баг? Написал уже:
Цитата Сообщение от alsav22 Посмотреть сообщение
Значит там так реализация сделана. Если использовать list-initialization не в конструктре, то работает (значит поддержка есть).

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2014, 21:31     Инициализация массива через конструктор
Еще ссылки по теме:

Инициализация полей класса через vector<> - C++
Здравствуйте, можете подсказать как правильно инициализировать поля класса, вот например есть класс MyClass, в нем 2 поля int x int у,...

Инициализация динамического массива - C++
Прога генерирует случайные числа(1-100) выводит их, пока не встретится 98, сохраняя все в массиве. Но мне нужно очень, чтобы программа сама...

Инициализация массива в конструкторе - C++
Здравствуйте, я хотел бы узнать, возможна ли инициализация массива в конструкторе без использования циклов? Вот пример конструктора ...

Инициализация массива в классе - C++
class matrix { int arr; ...... public: .............. void set_a(int input, int i, int j){arr=input;}; //тут ошибка };

Инициализация символьного массива - C++
Проблема в том, что выдает ошибку &quot;требуется выражение&quot; - непосредственно внутри конструктора при попытке присвоить символьному массиву...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
programina
15.02.2014, 21:31     Инициализация массива через конструктор
  #17

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Значит там так реализация сделана
Наверно они таким образом вымагают деньги за платную версию

Yandex
Объявления
15.02.2014, 21:31     Инициализация массива через конструктор
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru