Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > В Билдере собирается, в qt нет


Автор: nvrrus 7.12.2011, 18:10
Здравствуйте, уважаемые форумчане!

Класс в Билдере собирается, в qt нет.

Пишу класс так:

Код

template<typename T >
class EXPLIB C_VectorW : public C_Serialization
{
private:
    vector<T> m_vec;
    vector<T>::iterator m_cur_it;
    /* TODO 5 : Тесты2 на m_cur_it !!!!!!! */
public:
    C_VectorW() : m_cur_it(m_vec.begin()) { }
    C_VectorW(const vector<T>& Vec) : m_cur_it(m_vec.begin()) { m_vec = Vec;  }
    C_VectorW(const C_VectorW<T>& Vec) : m_cur_it(m_vec.begin()) { m_vec = Vec.m_vec; }



Первая ошибка: 'std::vector<T, std::allocator<_Tp1> >' is not derived from type 'C_VectorW<T>'
на строчку 6: vector<T>::iterator m_cur_it;

Подскажите, пожалуйста, что не понимает QT?

Автор: bsa 7.12.2011, 22:09
nvrrus, напиши слово typename перед vector<T>.

Кстати, у тебя есть серьезная ошибка. Ты инициализируешь итератор началом пустого вектора, а затем присваиваешь этому вектору значение. После присваивания итератор становится невалидным.
Перепиши так:
Код
C_VectorW(const vector<T>& Vec) : m_vec(Vec), m_cur_it(m_vec.begin()) {}


Добавлено через 1 минуту и 3 секунды
Кстати, Qt тут ни причем - давно известно, что билдер слабо соответствует стандарту С++.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)