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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: не могу разобрать ошибку invalid conversion from ‘ssize_t {aka int}’ to ‘const  (Прочитано 2410 раз)
NellyM
Гость
« : Декабрь 07, 2016, 22:47 »

подскажите пожалуйста  как можно конвертировать исправить.
упомянутая ошибка указывает на строку res = read(SocketFd, str, MAX_BUFFER); а конкретно на SocketFd       

 QString ress;     
    const char* res= ress.toLatin1().constData();
      res = read(SocketFd, str, MAX_BUFFER);

объявила ее вот так:   int SocketFd = ::accept(listener, (struct sockaddr*) NULL, NULL);

исходный код  на Си выглядел следующим образом.
 int  SocketFd = accept(listener, (struct sockaddr*) NULL, NULL);   

char res;     
   res = read(SocketFd, str, MAX_BUFFER);

мне срочно нужно его конвертировать в Qt. надеюсь на Вашу помощь
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Декабрь 08, 2016, 10:50 »

Данных мало.
Заметил, что раньше был char res, а сейчас const char *res, если сигнатура read не менялась, то странно, почему не ругается компилятор на оператор присваивания.
Покажите больше кода, конкретно сигнатуру read. Используйте теги форматирования для оформления листинга.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #2 : Декабрь 08, 2016, 10:56 »

const char* res= ress.toLatin1().constData();
Никогда так не делайте!!!

А QTcpSocket чем не угодил?
Записан

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

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Декабрь 08, 2016, 11:08 »

const char* res= ress.toLatin1().constData();
Никогда так не делайте!!!
На всякий случай поясню.
Здесь toLatin1() создаёт временный объект типа QByteArray, деструктор которого вызывается в этой же строке.
Вы у этого временного объекта просите указатель на его член и присваиваете его в res.
После вызова деструктора временного объекта, res становится недействительным указателем.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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