0

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;

Brykyz
  • 587
  • 4
  • 30

0 Answers0