I know that you can make a derived class object equal to a base class object, but I don't know how to do it the other way around. Here's the part of my code that I'm having difficulty with (Note: Animal is base class; Lion and Dog are derived classes).

// main.cpp
#include <iostream>

using std::cout;
using std::endl;

#include "animal.h"
#include "lion.h"
#include "dog.h"

int main()
    Animal a1( 0, 0 );
    Dog d1( 60, 120, "Fido" );
    Dog d2(0,0,"Toto");
    a1 = d1;
    cout << "Animal 1 now has the same height and weight as dog 1\n";
    [B]d2 = a1;[/B]
    cout << "Dog 2 now has the same height and weight as animal 1\n";
    return 0;
} // end main

The error message I get suggests that I need to overload the = operator to perform this, but for this assignment, I don't believe we are allowed to do that. How else can you do this?

I'm not sure if C++ permits that.
Better you can try
Animal* a1 = new Animal();
Animal* d1 = new Dog()

Then you can use dynamic_cast, if needed