Ambigu de la base de l'héritage multiple

Je suis en train d'écrire certaines sous-classes des classes dans une grande bibliothèque. Je suis un ambiguë "de base" de l'erreur. Voici une compilable exemple du problème:

#include <iostream>

//I can't change these because they are in the library:
class InteractorStyle {};
class InteractorStyleCamera : public InteractorStyle {};
class InteractorStyleImage : public InteractorStyle {};

//These are my subclasses (so I can change them):
class PointSelector : public InteractorStyle {};
class PointSelector2D : public InteractorStyleCamera, public PointSelector
{
  //This function has to exist exactly like this (a requirement of the library):
  static PointSelector2D* SafeDownCast(InteractorStyle *o)
  {
    return static_cast<PointSelector2D *>(o);
  } 
};


int main()
{

  return 0;
}

L'erreur est

erreur: ‘InteractorStyle " est ambigu dans la base de ‘PointSelector2D’.

Est-ce que je peux faire dans ce cas?

  • Si vous le savez, l'erreur est parce que les deux InteractorStyleCamera et PointSelector sont dérivées à partir de InteractorStyle. Désolé de ne pas aider beaucoup de bien 🙂
  • Est-il possible de faire PointSelector pas hériter?
InformationsquelleAutor David Doria | 2011-08-25