I have run into a bit of a tricky problem in some C++ code, which is most easily described using code. I have classes that are something like:
class MyVarBas
I think your mention of templates may be a good option, so something like:
class MyVarBase
{
};
class MyVar : public MyVarBase
{
int Foo();
};
template class MyBase
{
public:
MyBase(T* v) : m_var(v) {}
T* GetVar() { return m_var; }
private:
T* m_var;
};
class MyClass : public MyBase
{
public:
MyClass(MyVar* v) : MyBase(v) {}
};
However this would depend on what classes you can actually change. Also, the 'MyClass' definition could be redundant, unless it has other members over and above the MyBase class.