Use of undeclared identifier in C++ with templates and inheritance
c++, inheritance, templates
Solution
try
this->addStuff(thingy);
Problem
The following code cannot compile - use of undeclared identifier. I use GCC and XCode for compilation. Everything is in a single header file. ``` include "MyArray.h" template <typename T> class MyBase { public: MyBase(); virtual ~MyBase(); void addStuff(T* someStuff); protected: MyArray<T*> stuff; }; template <typename T> MyBase<T>::MyBase() {} template <typename T> MyBase<T>::~MyBase() {} template <typename T> void MyBase<T>::addStuff(T* someStuff) { stuff.add(someStuff); } // --------------------- template <typename T> class MyDerived : public MyBase<T> { public: MyDerived(); virtual ~MyDerived(); virtual void doSomething(); }; template <typename T> MyDerived<T>::MyDerived() {} template <typename T> MyDerived<T>::~MyDerived() {} template <typename T> void MyDerived<T>::doSomething() { T* thingy = new T(); addStuff(thingy); //here's the compile error. addStuff is not declared. } ``` Does anyone have an explanation? Thanks in advance!