class Transport{
private:
    int weight; // Member variable (Private)
    int capacity; // Member variable (Private)
    int speed; // Member variable (Private)
public:
    Transport(int aWeight, int aCapacity, int aSpeed) { // Default constructor
        if(aWeight > 0) { // Perform validation at the time of creating object
            weight = aWeight;
        } else {
            weight = 0;
        }
        if(aCapacity > 0) { // Perform validation at the time of creating object
            capacity = aCapacity;
        } else {
            capacity = 0;
        }
        if(aSpeed > 0) { // Perform validation at the time of creating object
            speed = aSpeed;
        } else {
            speed = 0;
        }
    }
    void carryGoods(); // Member function (Public) -> Each transport has carrying goods functionality.
};
class LandTransport : public Transport{ // Inherit transport class
private:
    char * transportationMode; // Member variable (Private)
    char * vehicleType; // Member variable (Private)
public:
    LandTransport(char * aTransporationMode, char * aVehicleType) {
        transportationMode = new char[strlen(aTransporationMode)+1];
        strcpy(transportationMode, aTransporationMode);
        vehicleType = new char[strlen(aVehicleType)+1];
        strcpy(vehicleType, aVehicleType);
    }
};
Can you please describe, what is wrong here and what is best practice?
 
    