![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
маерсон |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Есть код:
Пытаюсь передать array в контруктор класса
в качестве параметра. ClassResult Result(array). Но на счет правильности сомневаюсь. Можно ли передать ссылку на array? Если нет, то как потом высвободить память от переданного указателя? Это сообщение отредактировал(а) маерсон - 11.10.2009, 23:51 |
||||
|
|||||
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Сказать сложно - непонятно, как ты этот класс используешь, и где объявлен массив array.
Я думаю, надо написать что-то вроде этого:
или даже этого:
Это сообщение отредактировал(а) 586 - 12.10.2009, 04:58 |
||||
|
|||||
Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Я думаю так делать не стоит, а если вы выделите память для ar через new, что тогда? Наверное лучше будет сделать так :
и дальше самому следить за удалением arr. -------------------- ????? ??, ??????? ?????. ![]() |
||||
|
|||||
маерсон |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Спасибо вам
![]()
то есть в вашем варианте, как бы не создавался ar(с выделением через new или без), в конструктор передается именно указатель, а не копия, и в новом классе, для высвобождения памяти, я просто могу удалить arr(в деструкторе например)? |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Ошибки копи-пейста ![]() Вот так
-------------------- ????? ??, ??????? ?????. ![]() |
||||
|
|||||
маерсон |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
А по поводу удаления. Сейчас:
Тогда и удалять в деструкторе нужно:
Верно? Это сообщение отредактировал(а) маерсон - 12.10.2009, 09:40 |
||||
|
|||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
маерсон, для этих целей есть уже готовые решения - std::string и std::vector<char>. Зачем изобретать велосипед?
|
|||
|
||||
маерсон |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
bsa, это все полученные данные из сокета. Но, если взглянуть с этой стороны, то будет так:
Вроде никаких указателей и копий. Нигде не ошибся? Это сообщение отредактировал(а) маерсон - 12.10.2009, 15:37 |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
разве что здесь: в str мы передаём данные из сокета, так? но str - это класс-строка, которому передаётся char*. т.е. данные могут быть обрезаны, если встретится символ '\0' |
|||
|
||||
маерсон |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
zim22, а как быть тогда?
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
std::vector<char> использовать вместо std::string |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |