2016-04-16 3 views
-5

Я новичок в переполнении стека, и я был бы признателен за обратную связь. Я создаю класс шаблона графика и разделить его на два файла graph.h и graph.hpp, но каждый раз, когда я компилирую, я получаю эту ошибку:ошибка с неквалифицированным идентификатором перед ')' token

In file included from graph.h:97:0, 
        from main.cpp:2: 
    graph.hpp:4:26: error: expected unqualified-id before ‘)’ token 
    typename graph<T>::graph(){ 
         ^
makefile:2: recipe for target 'executable.x' failed 

Вот мой graph.hpp файл до сих пор:

#include "graph.h" 

//template <typename T> 
typename graph<T>::graph(){ 
    numVertices = 0; 
    graphWeight = 0; 
} 

И мой файл graph.h выглядит примерно так:

template <typename T> 
class graph{ 

    public: 
     graph(); 
. 
. 
. 
    private: 



}; 

Кроме того, мой main.cpp это просто:

#include "graph.h" 

int main(){ 
    graph<int> g; 

} 

Что может быть неправильным? Я знаю, что это, вероятно, что-то простое, что связано с шаблоном.

Благодаря

+1

Uncomment 'template ', удалить 'typename', что следует. –

ответ

0

В вашем graph.hpp фрагменте изменить свой код этой

#include "graph.h" 

template <typename T> 
graph<T>::graph(){ //Constructor has no return type. 
    numVertices = 0; 
    graphWeight = 0; 
} 

К сожалению, вы не можете действительно иметь отдельный заголовок и файл реализации для шаблонов, поэтому поставить выполнение в вашем заголовке файл. Для получения дополнительной информации и обходных решений см. Why can templates only be implemented in the header file?

+0

Спасибо! Посмотрите! –

Смежные вопросы