QVector<T>, если T не имеет конструктора по-умолчанию, заполнение элементов |
Здравствуйте, гость ( Вход | Регистрация )
QVector<T>, если T не имеет конструктора по-умолчанию, заполнение элементов |
AD |
7.7.2009, 18:10
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Не могу понять, как поправить следующую ошибку:
И так сделал везде, где встречается QVector<LOGRECORD>. Или же сделал так:
Структура LOGRECORD не имеет (теперь) конструктора по-умолчанию! Я вроде бы заменил все вектора указанным способом. При этом выдаются следующие ошибки: Цитата 1>Compiling... 1>VerticalGraphics.cpp 1>tlv.cpp 1>c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(410) : error C2512: 'LOGRECORD' : no appropriate default constructor available 1> c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(396) : while compiling class template member function 'void QVector<T>::realloc(int,int)' 1> with 1> [ 1> T=LOGRECORD 1> ] 1> c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(371) : while compiling class template member function 'QVector<T>::QVector(int,const T &)' 1> with 1> [ 1> T=LOGRECORD 1> ] 1> d:\projects\src\transaslogviewer\ParamDescr.h(39) : see reference to class template instantiation 'QVector<T>' being compiled 1> with 1> [ 1> T=LOGRECORD 1> ] 1>c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(451) : error C2512: 'LOGRECORD' : no appropriate default constructor available 1>Reader.cpp 1>c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(410) : error C2512: 'LOGRECORD' : no appropriate default constructor available 1> c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(396) : while compiling class template member function 'void QVector<T>::realloc(int,int)' 1> with 1> [ 1> T=LOGRECORD 1> ] 1> c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(371) : while compiling class template member function 'QVector<T>::QVector(int,const T &)' 1> with 1> [ 1> T=LOGRECORD 1> ] 1> d:\projects\src\transaslogviewer\ParamDescr.h(39) : see reference to class template instantiation 'QVector<T>' being compiled 1> with 1> [ 1> T=LOGRECORD 1> ] 1>c:\qt\4.3.2\include\qtcore\../../src/corelib/tools/qvector.h(451) : error C2512: 'LOGRECORD' : no appropriate default constructor available 1>Generating Code... 1>Build log was saved at "file://d:\Projects\Win32\Obj\Debug\TransasLogViewer\BuildLog.htm" 1>TLV - 4 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Видно, что они ведут в файл qvector.h! Как их поправить? Сталкивались с такой проблемой? Сообщение отредактировал AD - 7.7.2009, 18:20 |
|
|
AD |
8.7.2009, 9:05
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Подскажите, пожалуйста, как правильно создать вектор структур, у которой нет конструктора по-умолчанию? Никто не сталкивался с такими проблемами?
|
|
|
Влад |
8.7.2009, 9:42
Сообщение
#3
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Дык, эта.... 'LOGRECORD' : no appropriate default constructor available
Я не копался в потрохах QVector, но, если QVector аналогичен std::vector, то элементы вектора должны быть default constructible (это требование необязательное, но, судя по диагностике - для QVector обязательное), copy constructible и assignable (). Ты нарушаешь эти правила, - стало быть, ты ССЗБ..... "Правильно создать вектор структур, у которых нет конструктора по умолчанию" тебе в данном случае не удастся - взгляни на реализацию соответствующих функций в qvector.h, внутренняя реализация этого вектора требует их наличия. |
|
|
mozgofil |
10.7.2009, 19:42
Сообщение
#4
|
Студент Группа: Участник Сообщений: 32 Регистрация: 23.4.2009 Пользователь №: 706 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не могу понять, как поправить следующую ошибку:
А так:
вообще какой смысл использовать QVector, если задавать ему 0-размер? Чем QList не нравиться? |
|
|
SABROG |
10.7.2009, 23:23
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Текстовая версия | Сейчас: 14.1.2025, 10:31 |