Столкнулся с такой непонятной для меня проблемой.
В .h объвлены 2 сокета.
QTcpServer *m_serverSocket;
QTcpSocket *m_currentServerSocket;
При запуске программы оба уже не имеют не NULL значения. Соотвественно в нужном месте проверку на NULL проскакивают. переменные нигде не инициализируются до прохождения этой проверки. Может как-то нужно инициализировать поля?
if(!m_currentServerSocket)
{
......
}
Почему?
Давно не программировали на C++. Так что сильно не пинайте.
В ВУЗе писал на BC++B 5, 5.5, 6, VC++ 6 и никаких проблем с указателями не имел.
p.s. Вообще удивило отсутствие NULL как такового. Буду рад, если кто-то сможет кинуть ссылкой по поводу корректной работы с указателями в Qt4.
Указатели в Qt4 (Непонятно)
Модератор: Модераторы разделов
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
Re: Указатели в Qt4
Собственно, Qt4 здесь ни при чём. Стандарт C++ не даёт никаких гарантий, что объявленная, но не инициализированная переменная будет равна какому-то конкретному значению. Обычно там оказывается "мусор". Так что должно быть достаточно
и т.д.
Код: Выделить всё
QTcpServer *m_serverSocket = NULL;
и т.д.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Re: Указатели в Qt4
Потому и задавал вопрос. На подобное объявление возникает ошибка.Portnov писал(а): ↑24.02.2010 17:15Собственно, Qt4 здесь ни при чём. Стандарт C++ не даёт никаких гарантий, что объявленная, но не инициализированная переменная будет равна какому-то конкретному значению. Обычно там оказывается "мусор". Так что должно быть достаточно
Код: Выделить всё
QTcpServer *m_serverSocket = NULL;
и т.д.
main.cpp:2: In file included from main.cpp:2:
mainwindow.h:22: ошибка: ISO C++ запрещает инициализацию элемента ‘m_serverSocket’
mainwindow.h:22: ошибка: в результате которой ‘m_serverSocket’ становится статическим
mainwindow.h:22: ошибка: некорректная инициализация внутри класса статического элемента данных нецелочисленного типа ‘QTcpServer*’
В принципе проблему решил через QPointer<>, но сам факт непонятен.
Re: Указатели в Qt4
Неплохо было бы написать больше информации, тогда и ответ правильный дать легче
Насколько я понял, эти переменные - это поля класса? Тогда их инициализация должна проводиться в конструкторе (через список инициализации или в теле конструктора). И опять же, к Qt никакого отношения это всё не имеет. Просто нужно понять объектно-ориентированное программирование в С++
Насколько я понял, эти переменные - это поля класса? Тогда их инициализация должна проводиться в конструкторе (через список инициализации или в теле конструктора). И опять же, к Qt никакого отношения это всё не имеет. Просто нужно понять объектно-ориентированное программирование в С++