Работа с шаблонами класса в С++

С++ template ошибки компиляции

Здравствуйте!
Имеется .h файл - graph.h
В .h определен класс

template< typename VertexProperties, typename EdgeProperties > class Graph
{
public : //..код
typedef typename graph_traits < GraphContainer >:: vertex_descriptor Vertex;

Graph();
Vertex addVertex (...);
//код
}

Описываю в .cpp

#include graph.h

template < typename VertexProperties, typename EdgeProperties >
Graph < VertexProperties, EdgeProperties > ::Graph ( )
{
//код
}

template < typename VertexProperties, typename EdgeProperties >
Vertex Graph < VertexProperties, EdgeProperties > :: addVertex ()
{
//код
}

При попытке вызвать из main .cpp

typede Graph < VertexProperties, EdgeProperties > SemanticGraph;
SemanticGraph semanticGraph;

компилятор выдает ошибку: no matching function to call Graph<VertexProperties, EdgeProperties>::Graph();

Для addVertex же пишет: expected constructor, destructor or type conversion before Graph.

При реализации всех функций в .h никаких ошибок не возникает. Подскажите, в чем может быть проблема?
Ответы:
Все верно. Для большинства компиляторов реализация шаблонов должна быть в .h файлах.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.