LINUX.ORG.RU

История изменений

Исправление HighMan, (текущая версия) :

class Parent{
private:
  int i;
public:
  Parent& operator = (Parent &p){
    this->i = p.i;
  }
  Parent foo(){
    return *this;
  }
};

class Child: public Parent{
  Child & Parent::operator = (Parent &p)
};

Parent p;
Child c = p.foo() // Ошибка
c = p; //Так работает

Какой-то лютый бред с этим наследованием и статическими объектами классов…..

Исходная версия HighMan, :

class Parent{
private:
  int i;
public:
  Parent& operator = (Parent &p){
    this->i = p.i;
  }
  Parent foo(){
    return *this;
  }
};

class Child: public Parent{
  Child & Parent::operator = (Parent &p)
};

Parent p;
Child c = p.foo() // Ошибка
c = p; //Так работает

Какой-то лютый бред с этим наследованием и статическими объектами классов.....