| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > при создание класса иногда должно возвращатся NULL |
| Автор: Incinerated 18.2.2009, 15:48 | ||||||
Поискав на форуме нашел некоторые вещи, но что то не получается. Вот хеадер класса:
а вот cpp:
В cpp-файл не компилится. :( Пишется ошибка [C++ Error] TWorkWithServer.cpp(24): E2034 Cannot convert 'WSAData TWorkWithServer::*' to 'WSAData *'. Я так понимаю нельзя работать с объектами... а что можно сделать? создаю так:
т.е. смысл такой, если к серверу по заданному ай-пи и порту нельзя подключится, то нужно вернуть NULL при создании экземпляра данного класса. |
| Автор: Dem_max 18.2.2009, 16:20 | ||||
Вот для примера
|
| Автор: Lazin 18.2.2009, 16:22 |
| на какую строчку ругается? |
| Автор: Incinerated 18.2.2009, 16:27 | ||||
первую в функции
to DemMax это я и сам знаю что так можно сделать... а мне нужно чтобы, например, я делаю TWorkWithBase *temp = new TWorkWithBase("127.0.0.1",3333); если не подключилось, вернулось в переменную temp NULL. В некоторых закрытых классах это реализовано, мне нужно знать как... |
| Автор: Dem_max 18.2.2009, 16:33 |
| Incinerated, Ты лучше бы показал текст ошибки, а то сидий гадай на что ругается. |
| Автор: Incinerated 18.2.2009, 16:58 | ||||
Я писал...в первом посте....
|
| Автор: Lazin 18.2.2009, 19:38 |
| у gcc какие-то загадочные сообщения об ошибках Create - статический метод класса, а ты пытаешься получить из него доступ к нестатическим членам класса |
| Автор: Dem_max 19.2.2009, 09:36 |
| кстати незаметил, а зачем ты Create(char* ip,DWORD port); делаешь статическим ? |
| Автор: SenkraD 19.2.2009, 10:13 | ||||
Тогда измени свой метод так:
Плюс ексепшины можен нормальные кидать и обрабатывать их Ну и ещё можно было бы часть переделать, но это уже думай сам |
| Автор: Incinerated 19.2.2009, 11:15 |
| всем спасибо, а еще вопрос.... возможно ли такое сделать без отдельной функции Create? Чтобы где то в коде через new создавался экземпляр класса и если что-то не так в конструкторе, то возвращался бы NULL? Или только таким способом можно? Спасибо. |
| Автор: mes 19.2.2009, 11:23 | ||
нет, только разгрузив внешней (по отношению к создаваемому объекту) функцией. только вот Вы абсолютно уверены, что в случае отсутствия связи должен возвращаться NULL вместо объекта-сервера ? |
| Автор: GSasha 19.2.2009, 12:17 | ||
|
| Автор: Incinerated 19.2.2009, 12:44 | ||
да. А зачем мне объект-сервер, если он ничего сделать не может?! |
| Автор: Dem_max 19.2.2009, 12:48 |
| а в друг в данный момент коннекта нету, а через секунду сервер ответит. Так что лучше создавать экземпляр класса как обычно и иметь функцию Connect |
| Автор: Incinerated 19.2.2009, 13:08 | ||
я так и сделал |
| Автор: SenkraD 19.2.2009, 15:30 |
| Incinerated, для того чтобы сообщить об ошибки в конструкторе есть исключения (кстати, это основная причина ввода исключений в С++) |