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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2014, 04:54   #1
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию template

Никогда раньше с ними не работал, стал изучать по википедии (вообще попросили помочь с лабой), решил сделать самый просто примерчик, но не работает. Подскажите, что надо исправить?
list.h
Код:
#ifndef __LIST_H__
#define __LIST_H__

#include <iostream>

template<typename T> class List
{
public:
	List();
	~List();
	void add(T value);

protected:
	T value;
	//List* next;
	//List* prev;
};

#endif
list.cpp
Код:
#include "list.h"

template <typename T> List<T>::List()
{
	//prev = list;
	//next = null;
}

template <typename T> List<T>::~List()
{
	//if (next != NULL)
	//{
	//	delete next;
	//}
}

template <typename T> void List<T>::add(T value)
{
	/*List* temp;
	temp = &this;
	while (temp->next != NULL)
	{
		temp = temp->next;
	}
	temp->next = new List(temp);
	temp->value = value;*/
}
main.cpp
Код:
#include <iostream>
#include <locale>
#include "list.h"

using namespace std;

int main()
{
	List<int> list;
	cout.setf(ios::fixed);
	cout.precision(2);
	setlocale(LC_ALL, "Rus");
	//list.add(5);
	return 0;
}
Выдаёт ошибки:
main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall List<int>::~List<int>(void)" (??1?$List@H@@QAE@XZ)"
main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall List<int>::List<int>(void)" (??0?$List@H@@QAE@XZ)"

Последний раз редактировалось Vadik(R); 21.05.2014 в 04:55. Причина: Неверные теги оформления кода
Vadik(R) вне форума Ответить с цитированием
Старый 21.05.2014, 05:15   #2
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

Зато если писать весь код в одном h-файле, то оно работает.
При использовании шаблонов никак не получится разнести код по двум файлам?
Vadik(R) вне форума Ответить с цитированием
Старый 21.05.2014, 09:12   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Vadik(R) Посмотреть сообщение
При использовании шаблонов никак не получится разнести код по двум файлам?
Мало того, что не получится разнести по двум файлам, так еще и надо писать inline в имплементации методов.
waleri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
template-template partial specialization (шаблон шаблона) looooser Общие вопросы C/C++ 2 29.07.2013 23:59
template стек Dizelektwo Общие вопросы C/C++ 50 14.12.2012 12:58
friend template Dmitry333 Общие вопросы C/C++ 1 05.10.2012 10:58
Template / Lambda BOBAH13 Общие вопросы C/C++ 1 09.12.2011 12:40
template Bogdanm Общие вопросы C/C++ 2 22.04.2010 00:20