Всем привет,
Наконец-то приступил к изучению шаблонов. Решил написать первый опус.
Цель такая:
C++ (Qt)
do{edit(loop.query(container,loop.counter()))}while(loop.isStoped());
Просто и элегантно!
Написал вот так:
Заголовок:
C++ (Qt)
#ifndef LOOP_H
#define LOOP_H
#include <stddef.h>
#include <QVector>
#include <QObject>
template<typename T>
class Loop
{
public:
Loop();
virtual ~Loop(){}
T query(QVector<T> incomming, int i);
T query(QList<T> incomming, int i);
int counter();
bool isStoped();
private:
int count;
int stoped;
};
#endif // LOOP_H
Ресурс:
C++ (Qt)
#include "loop.h"
template<typename T>
Loop<T>::Loop():
count(0)
, stoped(false)
{
}
template<typename T>
T Loop<T>::query(QVector<T> incomming, int i)
{
if(!stoped) return incomming.at(i);
if(i+1 >= incomming.size()) stoped = true;
}
template<typename T>
T Loop<T>::query(QList<T> incomming, int i)
{
if(!stoped) return incomming.at(i);
if(i+1 >= incomming.size()) stoped = true;
}
template<typename T>
int Loop<T>::counter()
{
count++;
}
template<typename T>
bool Loop<T>::isStoped()
{
return stoped;
}
Дальше пытаюсь использовать:
C++ (Qt)
list << "First" << "Second" << "Third" << "Forth" << "Firth" ;
Loop<QString> loop;
do{edit(loop.query(list,loop.counter()));} while(loop.isStoped());
Компилятор пишет:
mainwindow.obj:-1: error: LNK2019: unresolved external symbol "public: bool __thiscall Loop<class QString>::isStoped(void)" (?isStoped@?$Loop@VQString@@@@QAE_NXZ) referenced in function "public: __thiscall MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QAE@PAVQWidget@@@Z)
Не понимаю причину. Почему нет доступа линкера?