Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с шаблонами / 6 сообщений из 6, страница 1 из 1
23.02.2016, 14:15
    #39177105
micoloss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с шаблонами
Добрый день!

Столкнулся с проблемой при использовании шаблона. Нужно организовать некое подобие Java'вского типа Object для хранение различных типов в одном векторе.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
#pragma once
#include <vector>
#include <memory>
#include "Object.h"

using namespace std;

class ObjectList
{
public:
	ObjectList(){}
	~ObjectList(){}
	template<typename T> void Add(T object);
	template<typename T> T Get(int index);
	int Size() { return objectList.size(); }
private:
	vector<shared_ptr<_Object>> objectList;
};

template<typename T> void ObjectList::Add(T object) {
	objectList.push_back(make_shared<Object<T>>(object));
}

template<typename T> T Get(int index){
	if (index < (Size() - 1))
	{
		return;
	}
	shared_ptr<_Object> content = objectList[index];
	shared_ptr<Object<T>> temp = static_pointer_cast<Object<T>>(content);
	return temp->GetValue();
}



вызов

Код: plaintext
1.
2.
3.
ObjectList objl;
objl.Add<int>(123);
auto a = objl.Get<int>(0);



получаю ошибку:

Код: plaintext
1.
error LNK2019: unresolved external symbol "public: int __thiscall ObjectList::Get<int>(int)" (??$Get@H@ObjectList@@QAEHH@Z) referenced in function "public:.....



Вроде при такой ошибке, при использовании шаблонов - все должно быть описано в одном хедере - что у меня и так написано. Чую что ошибка в какой-то мелочи)). В чем может быть причина? Спасибо!
...
Рейтинг: 0 / 0
23.02.2016, 14:25
    #39177109
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с шаблонами
micolossНужно организовать некое подобие Java'вского типа Object для хранение
различных типов в одном векторе.
Для этого нужен не шаблон, а union.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.02.2016, 14:30
    #39177111
micoloss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с шаблонами
Мне думалось, что через шаблон это будет проще сделать, хотя могу ошибаться.
...
Рейтинг: 0 / 0
23.02.2016, 15:26
    #39177128
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с шаблонами
micolossЧую что ошибка в какой-то мелочи))найди 7 отличий:
Код: plaintext
1.
2.
template<typename T> T ObjectList::Get(int index) {...}
template<typename T> T Get(int index) {...}
...
Рейтинг: 0 / 0
23.02.2016, 16:07
    #39177141
micoloss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с шаблонами
Баааалин.... Спасибо тебе мил человек!!! Машинально написал, и сижу недогоняю. Всех с праздником!!!!
...
Рейтинг: 0 / 0
25.02.2016, 15:58
    #39179002
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с шаблонами
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с шаблонами / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]