i'm doing these template:

template <class T, class A>
class events : public T
    bool operator==( const T& aTee ) const     // Explicit cast
    { return (aTee == *(static_cast<T*>(this))); }
    const T* getTpart() const { return this; } // Implicit cast
but i get some errors:
"C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|15|error: declaration of 'events<T, A> A'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|6|error: shadows template parm 'class A'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|15|error: template declaration of 'events<T, A> A'|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 2 seconds) ===|"
why, in normal class, i use 'A' without a problem and here i get errors?