Форум — Development Инициализация вектора при передачи в функцию 0 1 Каким образом в QVector достигаются такие штуки?: func(QVector<int>() << 1 << 2 << 3); Пытаюсь создать свой класс Vector. Оператор << уже перегрузил, что еще надо? Конструктор копирования? (Такие конструкции безопасны ведь?) Ссылка
template <typename T> struct V { V& operator<<( const T& item ) { (void) item; return *this; } }; int main( void ) { V<int>() << 1 << 2 << 3; } но лучше пользуйся С++11, там есть списки инициализации vaino (05.03.12 17:45:11 MSK) Ссылка
Оператор << уже перегрузил, что еще надо? Конструктор копирования? Конструктор копирования и оператор присваивания обязательны для любого класса, который нельзя копировать побайтно.(Такие конструкции безопасны ведь?) Вполне. Только время будет жрать. Qt-контейнеры используют разделяемые данные для ускорения. schizoid ★★★ (05.03.12 18:51:21 MSK) Показать ответ Ссылка
<< должен возвращать референс на сам объект, что бы можно было писать цепочки. И тогда все может работать, даже без конструктора копирования (если в объекте нет указателей и пр, ну выше уже сказали). AIv ★★★★★ (05.03.12 18:54:37 MSK) Ссылка
Ответ на: комментарий от schizoid 05.03.12 18:51:21 MSK Конструктор копирования и оператор присваивания обязательны для любого класса, который нельзя копировать побайтно.чушь:struct { string str_; } побайтно копировать нельзя, но руками добавлять конструктор копирования, например, тут не надо vaino (05.03.12 19:03:15 MSK) Показать ответ Ссылка
Ответ на: комментарий от vaino 05.03.12 19:03:15 MSK Виноват, забыл про умолчательный конструктор. schizoid ★★★ (05.03.12 20:17:03 MSK) Ссылка