Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2013, 00:01   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию не получается объявление шаблона

class.h
Код:

template <typename T>
class ITEM_FIND
{
public:
	T nod;
	T parent;
	T lftChld;
	T rghChld;
	int level;
};

template <typename T>
class treeDat {

	class Node {
		friend class treeDat;
	public:
		T * value;
		Node * parent;
		Node * left;
		Node * right;
		Node(const T & val, Node * p = 0) : parent(p), left(0), right(0) {
			value = new T(val);
		}
		~Node(){
			delete value;
		}		
	};

private:
	Node * root;

public:
	treeDat() : root(0) {}
	~treeDat(){}
	
	typedef typename treeDat::Node   TypeNode;

	QList<QList<ITEM_FIND<typename treeDat<T>::TypeNode * >>> findInLines( typename treeDat::TypeNode * = nullptr ,
		int level = 0, bool bStart = true);

};
class.cpp
Код:
template <typename T>
QList<QList<ITEM_FIND<typename treeDat<T>::TypeNode * >>> treeDat<T>::findInLines(typename treeDat<T>::TypeNode * nod,
	int level = 0, bool bStart = true){

}
somewhere in code...
Код:
#include <class.h>
.....

treeDat<int> binTree;
QList<QList<ITEM_FIND<typename treeDat<int>::TypeNode * >>> lstPtr = binTree.findInLines();
Error:
  • 1>draw_tree.obj : error LNK2019: unresolved external symbol "public: class QList<class QList<class ITEM_FIND<class treeDat<int>::Node *> > > __thiscall treeDat<int>::findInLines(class treeDat<int>::Node *,int,bool)" (?findInLines@?$treeDat@H@@QAE?AV?$ QList@V?$QList@V?$ITEM_FIND@PAVNode @?$treeDat@H@@@@@@@@PAVNode@1@H_N@Z ) referenced in function "private: void __thiscall draw_tree:n_btnCnstrct_clicked(vo id)" (?on_btnCnstrct_clicked@draw_tree@@ AAEXXZ) 1>C:\!VS\Qt\draw_tree\Win32\Debug\\ draw_tree.exe : fatal error LNK1120: 1 unresolved externals

Файлы class.h, class.cpp подключены к проекту, есьчо.

Плоха-плоха кумекаю шаблоны (

Последний раз редактировалось Smogg; 09.12.2013 в 00:03.
Smogg вне форума Ответить с цитированием
Старый 09.12.2013, 02:22   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Кароч. как оказалось, template-игрища - это сугубо std-шная забава.
Qt многоуровневые вложенные шаблоны не разбирает до конца.

Конкретно в этом случае произошел ambigous-вызов конструктора. M$-компилятор не смог отличить Qlist (Qlist(<type>)) от QList(<type>)...
Smogg вне форума Ответить с цитированием
Старый 09.12.2013, 11:47   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

По мне так реализацию findInLines() надо перенести из class.cpp в class.h
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получение ссылки на функцию из класса шаблона и передача ее как параметр шаблона pror0ck Общие вопросы C/C++ 7 17.06.2012 15:06
Народ не получается с задачей в c++! Ни как не получается даже начать! дайте решение,хотя бы набросайте чего нибудь! sonat Помощь студентам 2 30.05.2012 08:27
Использование файлов XLS в качестве шаблона и отображение этого шаблона в приложении Delphi? vodyara Общие вопросы Delphi 0 23.04.2012 13:13
Объявление класса Александр Елис Помощь студентам 2 22.10.2009 21:58