Russian Qt Forum
Ноябрь 24, 2024, 11:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: MacOS и size_t  (Прочитано 11268 раз)
gogi
Гость
« Ответ #15 : Май 05, 2011, 10:12 »

да, извиняюсь, скрин в аттаче

У тебя параметр str на стеке создаётся при вызове функции, а потом ты возвращаешь static QString. Что-то здесь не то.
Записан
gogi
Гость
« Ответ #16 : Май 05, 2011, 10:17 »

С size_t есть проблема. Безобидное, казалось бы, изменение в коде
for(size_t i = 0; i< v.size(); i++)

for(size_t i = 0; i< v.size()-1; i++)

приводит к печальным последствиям...

Вычитание уже само по себе намекает на знаковый тип, об этом даже могут сообщать шибко настроенные на варнинги компиляторы/анализаторы. Поэтому size_t заменить на ssize_t. Ну или если не хочется с нестандартность связываться - на int.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #17 : Май 05, 2011, 10:20 »

Цитировать
У тебя параметр str на стеке создаётся при вызове функции, а потом ты возвращаешь static QString. Что-то здесь не то.
Он возвращает копию str. А 'static' относится к 'видимости' функции, а не к её возвращаемому значению.
Другое дело, что аргумент по-хорошему должен быть 'const QString&'.
« Последнее редактирование: Май 05, 2011, 10:22 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #18 : Май 05, 2011, 10:26 »

Другое дело, что аргумент по-хорошему должен быть 'const QString&'.
Это почему же? Тогда бы пришлось вводить свою переменную внутри функции.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #19 : Май 05, 2011, 10:28 »

Если уж на то пошло, то правильнее будет:
Код
C++ (Qt)
static QString invertSlash (QString str)
{
 return str.replace ("/", "\\");
}
 

Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #20 : Май 05, 2011, 10:32 »

Цитировать
Это почему же? Тогда бы пришлось вводить свою переменную внутри функции.
Ну да, зато прототип красивый будет, как у троллей Улыбающийся
Записан

Qt 5.11/4.8.7 (X11/Win)
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #21 : Май 05, 2011, 13:25 »

Вычитание уже само по себе намекает на знаковый тип, об этом даже могут сообщать шибко настроенные на варнинги компиляторы/анализаторы. Поэтому size_t заменить на ssize_t.
ptrdiff_t вполне стандартный знаковый, совпадающий по разрядности с размером указателя (как и size_t).
Но вообще, как и писал Авварон, раз QString индексируется int'ом, то и цикл лучше делать по нему.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #22 : Май 05, 2011, 14:44 »

Свои 2 копейки внесу.
Код:
static QString invertSlash (const QString &str)
{
  return QString(str).replace("/", "\\");
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #23 : Май 05, 2011, 18:16 »

Авварон, по сравнению с моим вариантом профита никакого.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #24 : Май 05, 2011, 19:24 »

Кодестайлинг и фсе дела
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 23.