Okay, so here's what I want to do. I want the variable m_dwBarThings to ONLY be accessible by methods that were inherited from bar.h. So therefore it is in scope for DoThings( ) but DoStuff( ) does not have access to it, neither do any other non-interface methods like CalculateSomeStuff( )

I know I can just write the code so those methods don't access that member variable lol. I want to prevent future developers from accidentally using that variable somewhere else in the class.

Let's also say that this class can be used/accessed by multiple threads (if that matters to you guys).

Here's my best guess, you guys will suggest that I put m_dwBarThings into bar.h as a protected member variable, then FooBarImpl gets it for free.

That was my initial thought too. Unfortunately I have guidelines I need to follow and my interfaces are all abstract, pure virtual with no evidence as to what goes on in the implementation. Just pure virtual functions and documentation in the interfaces.

Thanks for the input though. Do you think that's a much better solution guidelines aside??

Though I don't really see why you'd have the need for the original problem =x. Whether or not you need the variable depends on the implementation, so that variable should be defined in whatever class provides the implementation.