I am trying to set variable name
of template class A
by it's definition.
I was inspired by this answer. My current files looks like this:
Header file
namespace N {
// Definition of class A
template <class T> class A {
public:
A();
static const char* name;
}
/*1*/ #define REGISTER_TYPE(T) template <> class N::A<T>::name = #T;
}
Source file
namespace N {
template<class T>
A<T>::A()
{
//empty constructor
}
}
REGISTER_TYPE(N::MyOtherClass);
But somehow, error messages 'name' in 'class N::A<N::MyOtherClass>' does not name a type
and expected unqualified-id before '=' token
(line with /*1*/
) pops up, but variable with this name exists.
I am using C++17. I have already tried to
Where am I doing mistake?
Thanks for your help!
//EDIT:
Solved in comments. Result is:
#define REGISTER_TYPE(T) template <> const char * N::A<T>::name = #T;