crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

6 страниц V  « < 3 4 5 6 >  
Ответить в данную темуНачать новую тему
> Создание неограниченного количества элементов
BRE
  опции профиля:
сообщение 13.8.2010, 8:27
Сообщение #41


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Алексей1153, я вовсе не занудствую. :)
Ты предлагаешь свой код человеку, который учиться. Этот код избыточен. Для чего учить человека писать избыточный код?
У тебя это вошло в привычку, но не обязательно (и, наверное, не правильно), что бы это вошло в его привычку. Отсюда и мой комментарий. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.8.2010, 8:34
Сообщение #42


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


BRE, дык, я ж ничего. У всех свой стиль, он прочитает всё, что мы тут понаписали - и выберет теперь свой стиль. Правильно рассуждаю ? ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 13.8.2010, 10:25
Сообщение #43


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


Цитата(Алексей1153 @ 13.8.2010, 7:45) *
Не забывай также удалить через delete (как вариант, можно сделать оболочку для указателя, чтобы не приходилось вызывать delete вручную

зачем делать то, что уже сделали в C++0x/boost/Qt? причём данная реализация не совсем корректна (нету конструктора копирования, нету конструктора перемещения(для C++0x), и прочие мелочи)

Сообщение отредактировал DEADHUNT - 13.8.2010, 10:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.8.2010, 10:39
Сообщение #44


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


DEADHUNT, я вообще про C++ речь веду. А где, кстати, в Qt это есть?

А про "не совсем корректность" - так вектору не нужен конструктор копирования и прочие мелочи, там оператор присваивания только нужен. Всё остальное -

"избыточность кода" © BRE
:)

Ненужные препирательства всё это. Я подсказал путь, а решений - туча, каждому нравится своё
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 13.8.2010, 14:00
Сообщение #45


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


Цитата(Алексей1153 @ 13.8.2010, 11:39) *
А где, кстати, в Qt это есть?

QScopedPointer/QSharedPointer

Цитата(Алексей1153 @ 13.8.2010, 11:39) *
А про "не совсем корректность" - так вектору не нужен конструктор копирования и прочие мелочи, там оператор присваивания только нужен.

посмотри стандарт, там есть требования к элементам контейнера - конструктор по умолчанию, конструктор копирования, деструктор, etc.
в твоем примере получается что ты не реализовал конструктор копирования, компилятор создал его(но не так как требует семантика умного указателя).

Сообщение отредактировал DEADHUNT - 13.8.2010, 14:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.8.2010, 15:53
Сообщение #46


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Алексей1153 @ 13.8.2010, 12:05) *
смотри работу operator=
оператор - член класса, т.к. мы в деструкторе, то объект собрался умирать вместе с его операторами. BRE прав, тут ты переборщил с осторожностью.

хотя у меня такое тоже встречается, но тому причиной простой копипаст.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.8.2010, 16:08
Сообщение #47


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а где сей стандарт глядеть?

А насчёт корректности работы - оно работает, одного только оператора присваивания достаточно. Правда, у меня в проекте std::vector используется, но работает без ошибок - очень хорошо и длительно тестировано :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 13.8.2010, 16:47
Сообщение #48


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


http://open-std.org/JTC1/SC22/WG21/docs/pa.../2010/n3090.pdf

насчёт работы это как раз из-за твоего зануления указателя в деструкторе, потому-что деструктор вызывается несколько раз вместо одного, попробуй сделать так в своём классе:
class smart_ptr {
    smart_ptr(const smart_ptr &);
....
};

или так
class smart_ptr {
    smart_ptr(const smart_ptr &) = delete;
....
};

и увидешь где используется конструктор копирования.

Сообщение отредактировал DEADHUNT - 13.8.2010, 16:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.8.2010, 17:33
Сообщение #49


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


DEADHUNT, не мог бы ты пояснить такую строчку:
Цитата(DEADHUNT @ 13.8.2010, 20:47) *
smart_ptr(const smart_ptr &) = delete;
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.8.2010, 17:54
Сообщение #50


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Синтаксис я тоже не понял :) что означает "= delete" и "= default" после прототипа функции?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

6 страниц V  « < 3 4 5 6 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 20:09