Russian Qt Forum

Программирование => С/C++ => Тема начата: DoubleMix от Май 31, 2011, 10:22



Название: Шаблонный класс с нешаблонными переменными
Отправлено: DoubleMix от Май 31, 2011, 10:22
Здравствуйте!
Возникла проблема при создании шаблонного списка в Qt. Я никак не могу обратится к нешаблонным переменным в классе.

Вот класс узла:
Код:
template <typename T>
class Node
{
public:
    Node(T node_data) : data(node_data) {}

    Node() {}
    ~Node() {}

    Node *next;
    T data;
    int index;
};

Когда иду дебаггером по коду, то переменная index вообще никак не появляется. Если проводить какие-нибудь операции с ней, то ничего просто не происходит.

Вот класс самого списка, в нем то же самое с переменной count.
Код:
template <typename T>
class List
{
private:
    Node<T> *head;
    Node<T> *tail;
    int count;

    List &operator = (const List &);
    List(const List &right);

public:

    List();
    ~List();

    void operator+=(T &node_data);
    T operator--();
    T operator[](int currentIndex);

    Node<T> * begin()
    {
        return head;
    }

    Node<T> * end()
    {
        //if(tail) return tail->next;
        return 0;
    }

    bool isEmpty();
    void clear();
};

Если в каком-нибудь методе этого класса объявить переменную, то с ней также нельзя работать! Видно лишь то, что приходит в метод (currentIndex, например).

Подскажите, пожалуйста, в чем моя ошибка?


Название: Re: Шаблонный класс с нешаблонными переменными
Отправлено: LisandreL от Май 31, 2011, 11:10
Код
C++ (Qt)
   Node< int > node;
   node.index = 1;
   qDebug()<<node.index;
Работает. В чём проблема?

----------------------------------------
UPD
Добавил в класс функцию:
Код
C++ (Qt)
   void setIndex(int i)
   {
       index = i;
   }

Код
C++ (Qt)
   Node< int > node;
   node.setIndex( 1 );
   qDebug()<<node.index;
Тоже работает. И дебаггер (gdb) ходит.
Так в чём проблема?


Название: Re: Шаблонный класс с нешаблонными переменными
Отправлено: DoubleMix от Июнь 01, 2011, 19:16
Спасибо за ответ. Проблема была в том, что компилятор начинает адово тупить, если реализацию методов закинуть в cpp файл(до абсурда доходило: при вызове метода он перескакивал в середину соседнего). Когда перенес всю реализацию в h файл, то завелось.


Название: Re: Шаблонный класс с нешаблонными переменными
Отправлено: kambala от Июнь 01, 2011, 19:57
есть подозрение, что проблема не в компиляторе...