#include <iostream>
using namespace std;

class Vehicles
{

public:

void wheels () {
cout << "Enter number of wheels: ";
int wh;
cin >> wh;

if (wh == 2) {
    cout << "You chose a Motorcycle!\n";
} else if (wh == 3) {
    cout << "You chose a Tricycle!\n";
} else if (wh == 4) {
    cout << "You chose a Car!\n";
}
}
} ; //number of wheels chosen

class brandMotorcycle : public Vehicles
{
public:

void brandM () {
cout << "Enter brand: \n 1: Yamaha \n 2: Ducati \n 3: Honda \n 4: Kawasaki \n 5: Suzuki \n";
int br;
cin >> br;

if ( br == 1) {
    cout << "You chose Yamaha! \n";
} else if (br == 2) {
    cout << "You chose Ducati! \n";
} else if (br == 3) {
    cout << "You chose Honda! \n";
} else if (br == 4) {
    cout << "You chose Kawasaki! \n";
} else if (br == 5) {
    cout << "You chose Suzuki! \n";
}
}
} ; //brand of motorcycle in case the user will chose 2 wheels

class brandTricycle : public Vehicles
{
public:

void brandT () {
cout << "Enter brand: \n 1: Classic \n 2: CATs \n 3: KYTO \n 4: Prime Green \n 5: Sun Etrike \n";
int br;
cin >> br;

if ( br == 1) {
    cout << "You chose Classic! \n";
} else if (br == 2) {
    cout << "You chose CATs! \n";
} else if (br == 3) {
    cout << "You chose KYTO! \n";
} else if (br == 4) {
    cout << "You chose Prime Green! \n";
} else if (br == 5) {
    cout << "You chose Sun Etrike! \n";
}
}
} ; //brand of tricycle in case the user chose 3 wheels

class brandCar : public Vehicles
{
public:

void brandC () {
cout << "Enter brand: \n 1: Mazda \n 2: Honda \n 3: Toyota \n 4: Kia \n 5: Volkswagen \n";
int br;
cin >> br;

if ( br == 1) {
    cout << "You chose Mazda! \n";
} else if (br == 2) {
    cout << "You chose Honda! \n";
} else if (br == 3) {
    cout << "You chose Toyota! \n";
} else if (br == 4) {
    cout << "You chose Kia! \n";
} else if (br == 5) {
    cout << "You chose Volkswagen! \n";
}
}
} ; //brand of cars in case the user chose 4 wheels

int main () {

Vehicles number;
brandMotorcycle brandM;
brandTricycle brandT;
brandCar brandC;
number.wheels();

    if (wheels == 2) {
brandM.brandM();
} else if (wheels == 3) {
brandT.brandT();
}  else if (wheels == 4) {
brandC.brandC();
} // this part is my problem

return 0;
}

Hice una herencia en la que si el usuario elige 2 ruedas obtendrá una motocicleta y podrá elegir qué marca es. Y si eligió 3 ruedas se pone triciclo y elige la marca y lo mismo con las 4 ruedas. Pero actualmente estoy luchando para ingresar la declaración if final porque no sé qué código debo usar.

c++
1
Rednuht 22 ene. 2021 a las 05:23

1 respuesta

La mejor respuesta

Hay muchas formas de interactuar con variables entre diferentes clases y diferentes funciones. Como mencionó @TheUndeadFish, los valores de retorno son un buen lugar para comenzar. Si tiene su corazón puesto en el uso de funciones nulas, una opción sería usar una variable pública dentro de su clase de Vehículos que estableció en la función de ruedas.

Entonces su clase de vehículos se convertiría en:

class Vehicles
{

public:
    int wh;

    void wheels() {
        cout << "Enter number of wheels: ";
        cin >> wh;

        if (wh == 2) {
            cout << "You chose a Motorcycle!\n";
        }
        else if (wh == 3) {
            cout << "You chose a Tricycle!\n";
        }
        else if (wh == 4) {
            cout << "You chose a Car!\n";
        }
    }
}; //number of wheels chosen

Y luego tu principal podría ser:

int main() {

    Vehicles number;
    brandMotorcycle brandM;
    brandTricycle brandT;
    brandCar brandC;
    number.wheels();

    int wheels = number.wh;
    if (wheels == 2) {
        brandM.brandM();
    }
    else if (wheels == 3) {
        brandT.brandT();
    }
    else if (wheels == 4) {
        brandC.brandC();
    } // this part is my problem

    return 0;
}

EDITAR: observe que si comenta la llamada a number.wheels () obtendrá un error de variable no inicializada. En la práctica, querrá que se inicialice (posiblemente en -1) en el constructor de la clase Vehicles para evitar la posibilidad de este error.

1
synoname 22 ene. 2021 a las 04:50