class MyBase
{
public:
   MyBase()  {}
   virtual ~MyBase()  {}

   virtual MyBase *Copy() const
   {
     return new MyBase(*this);
   }
};

class MyBase2
{
public:
   MyBase2()  {}
   virtual ~MyBase2()  {}

   virtual MyBase2 *Copy() const
   {
     return new MyBase2(*this);
   }
};

class MyDerived : public MyBase, public MyBase2
{
public:
   MyDerived()  {}
   virtual ~MyDerived()  {}

   virtual MyDerived *Copy() const
   {
     return new MyDerived(*this);
   }
};

Without the ', public MyBase2' above, it compiles just fine.  With it, I 
get (using VS.NET 2003 SP1):

error C2511: 'MyBase2 *MyDerived::Copy(void)' : overloaded member 
function not found in 'MyDerived'

Point me at the right section in the Standard that says this is correct 
behavior.  It seems like a bug to me.  Then again, I don't generally 
derive from more than one class.  (This is a simplified case of 
something much more complex - and I tested the above code before posting).

-- 
Thomas Hruska
CubicleSoft President
Ph: 517-803-4197

*NEW* MyTaskFocus 1.1
Get on task.  Stay on task.

http://www.CubicleSoft.com/MyTaskFocus/

Reply via email to