0

I want to do like this:

template <class T>
class MyClass
{
public:
    typedef std::shared_ptr<MyClass> Ptr;

so I can use like this:

void do(MyClass<int>::Ptr ptr)

however I'm getting

error: ‘MyClass<T>::Ptr’ is not a type
     void do(MyClass<T>::Ptr ptr);
Guerlando OCs
  • 1,886
  • 9
  • 61
  • 150
  • Are you actually doing `void do(MyClass::Ptr ptr)`, or do you have `template void do(MyClass::Ptr ptr)`? – NathanOliver Dec 04 '19 at 16:34
  • @NathanOliver-ReinstateMonica `do` is a member function of a templated class. Sory for not including it. – Guerlando OCs Dec 04 '19 at 16:44
  • No worries. When you want to do `void do(MyClass::Ptr ptr)` you need `void do(typename MyClass::Ptr ptr)` to tell the compiler that `ptr` is a type since it is a dependent name. – NathanOliver Dec 04 '19 at 16:45

0 Answers0