Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.12.2018
Сообщений: 4
1

Присвоение элементам массива значений структуры

09.03.2019, 17:43. Просмотров 1015. Ответов 10

Доброго дня.
У меня возникла проблема с присвоением элементам массива значений структуры. В чем может быть ошибка?
Есть два шаблона:
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T, int N>
struct arr
{
    T m[N];
};
 
template<typename T>
struct comp
{
    T re;
    T im;
};
И при попытке задания массива возникает ошибка: слишком много значений инициализатора
C++
1
2
3
4
int main()
{
    arr<comp<int>, 3> u{ {1, 4}, {2, 5}, {3, 7} };
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2019, 17:43
Ответы с готовыми решениями:

Присвоение значений элементам вложенной структуры
Необходимо присвоить значение элементам массива структур struct message { unsigned char code;...

Присвоение значений всем элементам массива
Как присвоить значение всем элементам массива наиболее простым способом думал что double...

Присвоение значений элементам двумерного динамического массива
Я недавно начал программировать на языке С++, поэтому, естественно, многого не понимаю :( Вот...

Присвоение значений элементам двумерного вектора
Недавно добрие люди помогли мне со следующим кодом 1 код vector&lt;vector&lt;char&gt;&gt; vv; // ......

10
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 22:39 2
C++
1
arr<comp<int>, 3> u{ 1, 4, 2, 5, 3, 7 };
Не нужно передавать 3-и инициализоватора по два элемента, так как у Вас в самой главное структуре (arr) только одно поле, а не три. Поэтому и писало, что много инициализаторов.
Попросту столько полей нет.

А параметр шаблона сам будет последовательно заполняться переданными инициализаторами - как Вы и хотели, по два элемента на одно измерения массива.
0
Mental handicap
1242 / 620 / 171
Регистрация: 24.11.2015
Сообщений: 2,426
09.03.2019, 22:53 3
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
arr<comp<int>, 3> u{ 1, 4, 2, 5, 3, 7 };
warning: suggest braces around initialization of subobject [-Wmissing-braces]
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 23:38 4
Цитата Сообщение от Azazel-San Посмотреть сообщение
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
arr<comp<int>, 3> u{ 1, 4, 2, 5, 3, 7 };
warning: suggest braces around initialization of subobject [-Wmissing-braces]
Круто. Так может быть написали бы вариант решения человеку, чтобы избежать подобного предупреждения, вместо цитирования советов компилятора? Я вот другого решения не знаю, так как меня всегда учили пользоваться конструкторами при любом удобном случае.
А цитировать мы все умеем.
0
Mental handicap
1242 / 620 / 171
Регистрация: 24.11.2015
Сообщений: 2,426
09.03.2019, 23:57 5
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Круто
Вообще-то, не очень.
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
может быть написали бы вариант решения человеку
C++
1
2
arr<comp<int>, 3> u{ {{1, 4}, {2, 5}, {3, 7}} }; // так
arr<comp<int>, 3> u{ comp<int>{1, 4}, comp<int>{2, 5} ... }; // или так
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
А цитировать мы все умеем.
Похоже Вы - нет.
1
0 / 0 / 0
Регистрация: 15.12.2018
Сообщений: 4
10.03.2019, 00:03  [ТС] 6
Спасибо всем!
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
10.03.2019, 00:05 7
Цитата Сообщение от Azazel-San Посмотреть сообщение
Похоже Вы - нет.
Верх логики. Особенно, если отбросить неуместный здесь сарказм и Ваше высокомерие, и обратить внимание на моё предыдущее сообщение с цитатой Вашего замечания.
Мы все здесь хотим помогать начинающим. По себе знаю, что человек скорей поймёт мою корявую попытку что-то ему объяснить, чем такое гениальное замечание от компилятора. Я-то его понял, но это не гарантирует того, что это поймёт человек, который только начал заниматься С++.
За то, что привели пример - спасибо, самому было полезно подучить список инициализации.
0
Azazel-San
10.03.2019, 00:12
  #8

Не по теме:

Цитата Сообщение от Krokodil9798 Посмотреть сообщение
и Ваше высокомерие
Я тихо обратил ваше внимание, на то что ваше решение не совсем верно, где от вас же в ответ получил сарказм и плевки.
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
человек скорей поймёт мою корявую попытку что-то ему объяснить, чем такое гениальное замечание от компилятора
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Мы все здесь хотим помогать начинающим
Так вы помогать хотите правильно или выдавать выдуманное за реальность (это не к вам именно относится), даже если я вам сделал замечание, знач оно имело место быть, я вас не унижал и ничего такого не делал..
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
не гарантирует того, что это поймёт человек
У кого тут еще высокомерие?)
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
который только начал заниматься С++
Причем тут С++, если там ошибка на человеческом языке выдана, причем не на китайском, а на все известном.
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
За то, что привели пример - спасибо, самому было полезно подучить список инициализации.
Тогда зачем разводить всю эту токсичность?

0
Krokodil9798
10.03.2019, 00:31
  #9

Не по теме:


Цитата Сообщение от Azazel-San Посмотреть сообщение
Тогда зачем разводить всю эту токсичность?
Не я это начал и не нужно здесь перекручивать мои слова и искать в них какой-то изьян, выгодный для Вас.

Цитата Сообщение от Azazel-San Посмотреть сообщение
У кого тут еще высокомерие?)
И никакого высокомерия у меня нет. Это банальная константация фактов. Я работаю программистом С++ уже два года и уж точно обладаю бОльшими знаниями, нежели человек, задавший вопрос и умею обращать внимания на предупреждения компилятора.

Цитата Сообщение от Azazel-San Посмотреть сообщение
даже если я вам сделал замечание, знач оно имело место быть, я вас не унижал и ничего такого не делал
Цитата Сообщение от Azazel-San Посмотреть сообщение
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Круто.
Вообще-то, не очень.
Цитата Сообщение от Azazel-San Посмотреть сообщение
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
А цитировать мы все умеем.
Похоже Вы - нет.
Вы шутите или всерьёз не видите неприкрытого сарказма в Ваших словах?

Цитата Сообщение от Azazel-San Посмотреть сообщение
Причем тут С++, если там ошибка на человеческом языке выдана, причем не на китайском, а на все известном.
Да притом, что никто с новичков не смотрит на эти ошибки, а ищет решений на форумах. По своему опыту знаю. Поэтому человек и пришёл на cyberforum, а не полез в гугл узнать, что нужно делать в данной ситуации. А цитирование того, что он скорей всего видел в компиляторе, но не понял, как-раз и выглядит как издёвка с Вашей стороны.

Вообщем, пока заканчивать наши споры. Я понял, в чём я был неправ, поймите и Вы, в чём Ваша вина (лучше бы, на мой взгляд, написали данное предупреждение и решение, как написать код правильно, а не ограничились одним замечанием)

0
Mental handicap
1242 / 620 / 171
Регистрация: 24.11.2015
Сообщений: 2,426
10.03.2019, 00:45 10

Не по теме:

Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Не я это начал



Не по теме:

Не вижу смысла читать это далее, я вам указал на ошибку, Вы начали из-за замечания бесится или как это назвать, весеннее обострение что ли.. Удачи.

0
Krokodil9798
10.03.2019, 00:54     Присвоение элементам массива значений структуры
  #11

Не по теме:


Цитата Сообщение от Azazel-San Посмотреть сообщение
весенне обострение что ли
Весеннее обострение видимо у Вас, раз Вы продолжаете надо мной шутить, даже не пытаясь вчитаться в мои аргументы и посмотреть на данную ситуацию с другой точки зрения. Вот это и правда :facepalm:
Цитата Сообщение от Azazel-San Посмотреть сообщение
Удачи.
Взаимно

0
10.03.2019, 00:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2019, 00:54
Привет! Вот еще темы с ответами:

Использование вектора для присваивания значений элементам структуры
Здравствуйте, форумчане. Сразу отмечу, что я новичек, так что, возможно, мой вопрос покажется вам...

Как перегрузить операцию = для присваивания элементам структуры внутри класса значений?
Помогите, если не затруднительно. Столкнулся с проблемой, когда пытался присвоить в конструкторе...

Присвоение значений одного массива другому
Как присвоить значения массива Array1 массиву Array2. Допустим необходимо отобрать все...

Ошибка при задании значений элементам массива
где я ошибся? заранее спасибо char Arry; Arry = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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