Re[5]: Ошибка при компиляции
От: Аноним  
Дата: 03.03.05 18:07
Оценка:
В следующей версии не компилится одна строка :

#include <stdio.h>
#include <stdlib.h>

 class Ml
{
};

 class X
{
   public:
     void Eat( Ml ml );
};

class Antilopa : public Ml
{
};

class Lion : public X
{
  public:
   void Eat( Ml ml )
  {
    printf("Lion eat antilopa" );
  }
};
class Bizon : public Ml
{
};

class Wolf : public X
{
  public:
   void Eat( Ml ml )
  {
    printf("Wolf eat bizon" );
  }
};

 class Continent
{
   public:
           X   create_x;
           Ml  create_ml;
};

class Africa : public Continent
{
  public:
   Ml create_ml()
  {
    Antilopa *ant = new Antilopa();
    return *ant;
  }
  X create_x()
  {
    Lion *ln = new Lion();
    return *ln;
  }
};

class America : public Continent
{
  public:
   Ml ml()
  {
    Bizon *bz = new Bizon();
    return *bz;
  }
  X x()
  {
    Wolf *wl = new Wolf();
    return *wl;
  }
};

class AnimalWorld
{
  private : Ml ml;
  private : X x;

  public:
   AnimalWorld( Continent continent )
  {
    x  = continent.create_x;
    ml = continent.create_ml;
  }

  public:
   void RunFoodChain()
  {
    x.Eat(ml);// вот тут ошибка компиляции
  }
};


int main()
{

  Continent *africa  = new Africa();
  AnimalWorld *world = new AnimalWorld( *africa );
  world->RunFoodChain();

  return 0 ;
}

Компилятор пишет : // undefined reference to 'X::Eat(ml)'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.