|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
Имеется структура Str1. На ее основе делается вектор Код: plaintext 1.
и инициализируется - около 1000 значений. Далее вектор передается в функцию типа int Foo(vector<Str1> vstr), которая должна изменить значения полей структур непосредственно самого вектора vStr1. Всячески варианты с int Foo(vector<Str1> *vstr) и int Foo(vector<Str1> &vstr) пробовал, но они не идут. Ошибок компиляции-выполнения нет, но на выходе ахинея.) Как, в итоге, передать вектор в функцию чтобы вектор можно было в ней редактировать? "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна"[/color ] ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 22:20 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAВсячески варианты с int Foo(vector<Str1> *vstr) и int Foo(vector<Str1> &vstr) пробовал, но они не идут. Значит плохо пробовал, ибо они единственно верные. Причём второй вернее первого. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 22:28 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAИмеется структура Str1. На ее основе делается вектор Код: plaintext 1.
и инициализируется - около 1000 значений. Далее вектор передается в функцию типа int Foo(vector<Str1> vstr), которая должна изменить значения полей структур непосредственно самого вектора vStr1. Всячески варианты с int Foo(vector<Str1> *vstr) и int Foo(vector<Str1> &vstr) пробовал, но они не идут. Ошибок компиляции-выполнения нет, но на выходе ахинея.) Как, в итоге, передать вектор в функцию чтобы вектор можно было в ней редактировать? "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна"[/color ] Вечер халявы для сутдетов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 22:41 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
ёёёёё,Спасибо, но все равно ахинея. Код: plaintext 1. 2. 3. 4. 5. 6.
Редактируются 2 последних столбца. Функции были отлажены и работали в виде int Foo(), когда вектор был в области видимости и в функцию не передавался. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 22:57 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAИмеется структура Str1. На ее основе делается вектор Код: plaintext 1.
и инициализируется - около 1000 значений. Далее вектор передается в функцию типа int Foo(vector<Str1> vstr), которая должна изменить значения полей структур непосредственно самого вектора vStr1. Всячески варианты с int Foo(vector<Str1> *vstr) и int Foo(vector<Str1> &vstr) пробовал, но они не идут. Ошибок компиляции-выполнения нет, но на выходе ахинея.) Как, в итоге, передать вектор в функцию чтобы вектор можно было в ней редактировать? "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна"[/color ] В другой поток случайно не передаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 22:58 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
L.Otujktd, нет, не передаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 23:07 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAёёёёё,Спасибо, но все равно ахинея. Код: plaintext 1. 2. 3. 4. 5. 6.
Редактируются 2 последних столбца. Функции были отлажены и работали в виде int Foo(), когда вектор был в области видимости и в функцию не передавался. Код покажи. Весь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 23:09 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
L.Otujktd, вот результаты той-же Foo(), без передачи в нее вектора. Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 23:11 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
Ребилдол - лекарство от головной боли у программиста: сотрите все объектники и сделайте полную пересборку. Было однажды такое, когда добавил пару полей в тип, по которому создавался вектор. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 23:56 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
ёёёёё, ваш код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Теперь унесем вектор и его определение из области видимости функции Foo. Cаму Foo() поместим в класс, оставив в его области видимости только определение Str1 Код: plaintext 1. 2. 3. 4. 5. 6.
(вектор как public переменная находится в другом классе не состоящем в родственных и никаких отношениях с классом где находится Foo()) И уже в функции определим вектор Foo(vector<Str1> vstr1). И & в представленном виде перестает работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 01:22 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
Да, все оч. грустно, все это работать не будет. Код: plaintext 1. 2. 3.
Передача векторов в функцию, значение vs reference С++ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 02:27 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAёёёёё, ваш код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Теперь унесем вектор и его определение из области видимости функции Foo. Cаму Foo() поместим в класс, оставив в его области видимости только определение Str1 Код: plaintext 1. 2. 3. 4. 5. 6.
(вектор как public переменная находится в другом классе не состоящем в родственных и никаких отношениях с классом где находится Foo()) И уже в функции определим вектор Foo(vector<Str1> vstr1). И & в представленном виде перестает работать. Только что так сделал - все работает отлично. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 02:37 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
ёёёёё, коли так, если не затруднит. Пусть вектор будет, скажем: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Заполняем массив vector<Str1> str; кроме str.с. Далее функция ко всему массиву Код: plaintext 1. 2. 3. 4. 5.
У меня подобная конструкция по ссылке не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 03:00 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAУ меня подобная конструкция по ссылке не работает. Так и пишет "sorry, this construct does not work" ? Подробнее надо ошибку описывать. С виду код вполне рабочий, проверяй наполнение вектора, скорее всего там косяк. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 05:22 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBA Код: plaintext 1. 2.
1) str или str1? 2) С++11 и выше: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 09:55 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
ёёёёёYUBAёёёёё,Спасибо, но все равно ахинея. Код: plaintext 1. 2. 3. 4. 5. 6.
Редактируются 2 последних столбца. Функции были отлажены и работали в виде int Foo(), когда вектор был в области видимости и в функцию не передавался. Код покажи. Весь. Поддерживаю. Интересно уже посмотреть код. Если ахинея - это длинная последовательность цифр, то возможно ошибка в функции вывода, например предполагается вывод строки %s, а в параметрах вместо строки объект, у которого нет преобразования в строку или оно не вызывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 10:06 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBA, считаю целесообразным изучить макет вашего кода на котором эта ошибка воспроизводится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 11:33 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAёёёёё, коли так, если не затруднит. Пусть ... . Пустая болтовня. Делаешь минимальное приложение, воспроизводящие 'проблему', и выкладываешь сюда. Только рабочий код, без сказок. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 12:44 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAИмеется структура Str1. На ее основе делается вектор Код: plaintext 1.
и инициализируется - около 1000 значений. Далее вектор передается в функцию типа int Foo(vector<Str1> vstr), которая должна изменить значения полей структур непосредственно самого вектора vStr1. Всячески варианты с int Foo(vector<Str1> *vstr) и int Foo(vector<Str1> &vstr) пробовал, но они не идут. Ошибок компиляции-выполнения нет, но на выходе ахинея.) Как, в итоге, передать вектор в функцию чтобы вектор можно было в ней редактировать? "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна"[/color ] Такие косяки случаются когда хранимый в контейнере тип не имплементирует необходимые для контейнеров операции по-правильному, скажем оператор копирования или конструктор копирования. Контейнеры это неявно используют, а дефолтная реализация от языка может накосячить с какими-нибудь указателями. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 14:40 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
ну яТакие косяки случаются когда хранимый в контейнере тип не имплементирует необходимые для контейнеров операции по-правильному, скажем оператор копирования или конструктор копирования. Контейнеры это неявно используют, а дефолтная реализация от языка может накосячить с какими-нибудь указателями. Тоже склоняюсь к этому варианту. Тем более, что вопрос вполне описан в YUBA Код: plaintext 1. 2.
Передача векторов в функцию, значение vs reference С++ что и имеет место быть. Думаю попробовать поместить вектор в класс и работать с вектором не непосредственно или по ссылке, а через функции класса имеющие доступ непосредственно к телу вектора. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 16:38 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAчто и имеет место быть. Думаю попробовать поместить вектор в класс и работать с вектором не непосредственно или по ссылке, а через функции класса имеющие доступ непосредственно к телу вектора.а не проще исправить глючный класс в векторе? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 19:46 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Как? Ошибок в коде нет. Исполнение в норме. Foo() - работает штатно. Вектор в том-же классе. Foo(vector<Str1> &vstr1) - полностью идентична, но находится в другом классе и работает со ссылкой на вектор. На выходе функции ахинея, вектор нормально не редактируется. Мне почти очевидно, что дело не в самом коде, а в Код: plaintext 1. 2.
Передача векторов в функцию, значение vs reference С++ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 20:33 |
|
Передача вектора в функцию.
|
|||
---|---|---|---|
#18+
YUBAКак?тебе 10 раз сказали - дать тестовый пример. YUBAМне почти очевидно, что дело не в самом коде, а ва в классе который написал ты? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2019, 20:49 |
|
|
start [/forum/topic.php?fid=57&fpage=12&tid=2017567]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 145ms |
0 / 0 |