jeudi 16 janvier 2020

Accessing virtual classes in C++

I'm trying to understand virtual classes in C++. In Wikipedia, I found this example:

#include <iostream>

class Machine {
public:
    void run() { }

    class Parts {
    public:
        virtual int get_wheels() = 0;

        virtual std::string get_fuel_type() = 0;
    };
};

// The inner class "Parts" of the class "Machine" may return the number of wheels the machine has.
class Car: Machine {
public:
    void run() { 
        std::cout << "The car is running." << std::endl; 
    }

    class Parts: Machine::Parts {
    public:
        int get_wheels() override {
            std::cout << "A car has 4 wheels." << std::endl;
            return 4;
        }

        std::string get_fuel_type() override {
            std::cout << "A car uses gasoline for fuel." << std::endl;
            return "gasoline";
        }
    };
};

I can get the number of wheels of a car with:

Car::Parts c_p;
c_p.get_wheels();

Is there any other (simple) way? Is there any way instantiating only Car car ?

Aucun commentaire:

Enregistrer un commentaire