//  main.cpp
//  MultiInheritance
//  Created by Robert Metcalfe on 29/05/13 ...  Class inherits from two other classes
//  Copyright (c) 2013 Robert Metcalfe. All rights reserved.     //using namespace std;
#include <iostream>

class Pet {
public:
    char *thename;
    Pet() { };
    void putPet(char* tn) { thename = tn; };
};

class Mammal {
public:
    char *aname, *akingdom, *aphylum, *aclass, *anorder, *afamily, *agenus, *aspecies, *abinomial;
    Mammal() { };
    void putMammal(char* an, char* ak, char* ap, char* ac, char* ao, char* af, char* ag, char* as, char *ab) {
        aname = an; akingdom = ak; aphylum = ap; aclass = ac; anorder = ao; afamily = af; agenus = ag; aspecies = as; abinomial = ab; };
};

class Cat: public Pet,
           public Mammal {
public:
    Cat(char* tn, char* an, char* ak, char* ap, char* ac, char* ao, char* af, char* ag, char* as, char *ab) {
        putPet(tn);
        putMammal(an, ak, ap, ac, ao, af, ag, as, ab); };
    void show() {
        std::cout << "My pet cat is called " << thename << " with Common Name: " << aname << std::endl;
        std::cout << "Kingdom: " << akingdom << "  Phylum: " << aphylum << "  Class: " << aclass << "  Order: " << anorder << std::endl;
        std::cout << "Family: " << afamily << "  Genus: " << agenus << "  Species: " << aspecies << "  Binomial name: " << abinomial << std::endl;
    };
};

int main(int argc, char** argv) {
    Cat mycat("Kitty", "Domestic Cat", "Animalia", "Chordata", "Mammalia", "Carnivora", "Felidae", "Felis", "F. catus", "Felis catus");
    mycat.show();
    return 0;
}
            
