Название: приведение типов Отправлено: paxerus от Февраль 03, 2010, 12:46 Добрый день
У меня простенький вопрос как как корректно привести тип std::vector<char> к QByteArray (или другому типу QT) Название: Re: приведение типов Отправлено: BRE от Февраль 03, 2010, 13:00 QVector<T> QVector::fromStdVector ( const std::vector<T> & vector ) [static]
А вообще есть много вариантов это сделать для разных контейнеров, использую указатель на данные и их размер. Название: Re: приведение типов Отправлено: paxerus от Февраль 03, 2010, 13:12 пасиб большое то что нужно :)
Название: Re: приведение типов Отправлено: paxerus от Февраль 03, 2010, 15:51 еще маленький вопрос а как std::vector<unsigned char> преобразовать в std::vector< char>
Название: Re: приведение типов Отправлено: kuzulis от Февраль 03, 2010, 16:40 А не нужно этого делать, главное - это правильно потом интерпретировать, ИМХО :)
Название: Re: приведение типов Отправлено: Igors от Февраль 03, 2010, 18:24 Давайте не путать "приводить тип" и "конвертировать". То что показал BRE правильно и будет работать но это никакого отношения к "приведению" не имеет, просто из одного контейнера копируется в другой, имеете 2 контейнера. "Приведение" означает использование физически тех же данных но с др.типом. Привести можно так
Код: typedef std::vector <char> TVec; или то же самое но "по теории" Код: TVec * theUVec = static_cast<TVec *> (&theVec); Но смотрится это неважно :) Как сказал kuzulis, проще и лучше приводить данные "по месту", напр. Код: char с = (char) theVec[0]; Название: Re: приведение типов Отправлено: paxerus от Февраль 04, 2010, 07:21 А не нужно этого делать, главное - это правильно потом интерпретировать, ИМХО :) я еслиб мне это надо было потом я б не спрашивал мне нужно именно сразу все :)в принцпи можно и так TVec * theUVec = (TVec *) &theVec; оставить, но хотелось бы посмотреть на вариант со static_cast static_cast я изначально рассматривал но не знаю как правильно написать его,то что написано в теории не работает у меня кто со static_cast поможет? Название: Re: приведение типов Отправлено: BRE от Февраль 04, 2010, 08:06 static_cast я изначально рассматривал но не знаю как правильно написать его,то что написано в теории не работает у меня В теории такого не написано! Почитай, что говорит стандарт по поводу static_cast.кто со static_cast поможет? static_cast<T>( x ) это не тоже самое, что (T)x. Такое преобразование возможно сделать, только с использованием костылей, типа приведения сначала к void*, что полностью ломает контроль типов. Код Таким костылем, можно привести все что угодно, к чему угодно, и компилятор при этом будет молчать. Поэтому это опасная практика. |