2015-06-29 2 views
-2

Вот мой код:ошибка из шаблона

// head file 
class JsonResponse 
{ 
public: 
    template<typename T> 
    void add(const string &, const T &); 
}; 

template<typename T> 
void JsonResponse::add(const string & name, const T & t) 
{ 
    // do something 
} 

я скомпилировать его и получить эту ошибку:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Можете ли вы мне помочь? большое спасибо.

+1

http://coliru.stacked-crooked.com/a/c91f8ce79eaa36bc – Steephen

+0

, какая линия вызывает ошибку? вы используете 'using namespace std'? Потому что 'string' не имеет префикса. – UmNyobe

+0

@UmNyobe 'void add (const string &, const T &);' и 'void JsonResponse :: add (const string & name, const T & t)' – Yves

ответ

0

Это не ошибка в шаблоне. вы используете string, который не разрешен, если не существует директивы using namespace std. Вы должны использовать std::string вместо

+0

omg .... Я снова обманул Visual Studio .. ... Иногда цвет подсказки не работает .... thx много. – Yves

0

Использовать шаблон, как это, он будет работать

#include <iostream> 
#include <string> 

using namespace std; 

class JsonResponse 
{ 
    public: 
     template<typename T> 
     void add(const string &, const T &); 
}; 

template<typename T> 
void JsonResponse::add(const string & name, const T & t) 
{ 
    std::cout<<name<<std::endl; 
    std::cout<<t<<std::endl; 
} 

int main(void) 
{ 
    JsonResponse jsonDbl; 
    jsonDbl.add("nitendra",3); 
    return 0; 
} 
Смежные вопросы