Sorry to trouble you all again, but it seems that I can't get the Barton-Nackman trick to work. I had problems originally, so tried a simple test problem .. which worked, but my original problem is not working. My inheritance is like this,

Class A {
protected:
  float * some_data;
  int x;
  int y;
  int z;
}

template <typename T>
Class B : public A
{
public:
    T& asLeaf() { return static_cast<T&>(*this); } 
    inline float SomeFunc(int i, int j, int k) {
        return asLeaf().SomeFunc(i,j,k);   
    }
}

class C : public B<C>
{
  
inline float SomeFunc(int i, int j, int k) {
        return some_data[k*x*y + j*x + i];
   }
}

When I use gcc to compile this .. I get errors of the sort ..

error: 'some_data' was not declared in this scope
error: 'x' was not declared in this scope
error: 'y' was not declared in this scope

Any ideas ?

thanks,
~Hari