@KeyDel

Как правильно оформить шаблон функции в классе с++?

Не могу понять, как правильно оформить шаблон функции в классе.
Компилятор показывает ошибку: no matching function for call to ‘MyClass::addData()’

MyClass.h
class MyClass
{
	void caller();

	template <typename T>
	void addData(std::string key_map);

	template <typename T>
	T isIterator(std::string key_map);

	map_type map_data;
};


MyClass.cpp
void MyClass::caller()
{
	addData(key_map);
};

template <typename T>
void MyClass::addData(std::string key_map)
{
	T iterator = isIterator(key_map);
	if(iterator != false) {
		// далее по замыслу пользуюсь итератором
	}
}

template <typename T>
T MyClass::isIterator(std::string key_map)
{
	appropriate_iterator_type iterator = this->map_data.find(key_map);
	if (iterator != this->map_data.end())
	{
		return iterator;
	}
	return false;
};


Извиняюсь, если написал откровенную дичь, новичок в этом вопросе. Гугл уводит меня в дебри, в которых я пока слабо разбираюсь.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
В template<> в хедере надо оборачивать весь класс, а не каждую функцию по отдельности.

Посмотрите примеры.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы