Я делаю некоторые упражнения, чтобы понять шаблон C++. Мое намерение состоит в том, чтобы создать шаблон функции, который изменяет поведение в базе класса шаблона.ошибка с шаблоном функции - не была объявлена
я получаю следующее сообщение об ошибке:
In file included from main.cpp:2:0:
test1.h: In function ‘int my::fun(char*, int)’:
test1.h:12:26: error: ‘my::T’ has not been declared
Упрощенные файлы следующие
------ файл test1.h -------
#ifndef TEST_1_H
#define TEST_1_H
#include "test2.h"
namespace my
{
template <typename T = myclass>
int fun(char* str,int dim)
{
return my::T::fun(str,dim);
}
}
#endif
----- файл test2.h -------
#ifndef TEST_2_H
#define TEST_2_H
namespace my
{
struct myclass
{
static int fun(char* str,int dim);
};
}
#endif
------ файл test2.cpp --------
#include "test2.h"
namespace my
{
int myclass::fun(char* str,int dim)
{return 0;}
}
----- файл main.cpp -------
#include "test2.h"
#include "test1.h"
int main()
{}
Может вы, пожалуйста, помогите мне выяснить, где ошибка?
Заранее спасибо.
Для компиляции я использую новый стандарт: г ++ -std = C++ 11 test2.cpp main.cpp – GTA
Просто удалите мой :: before T. Шаблоны аргументов не живут в пространствах имен. –
Hi Coert, все нормально работает. Большое спасибо. Поэтому, когда я использую аргумент шаблона, я никогда не должен квалифицировать аргумент шаблона. – GTA