0

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";
    a1.print();
    [B]d2 = a1;[/B]
    cout << "Dog 2 now has the same height and weight as animal 1\n";
    d2.print();
    system("pause");
    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?

2
Contributors
1
Reply
2
Views
8 Years
Discussion Span
Last Post by kbshibukumar
0

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

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.