-4
#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
#include <string.h>
using namespace std;


class Empleado {
    private:

        string m_nombre;
        string m_provincia;
        string m_trabajo;
        int m_ID;

    public:
        void ImprimirInfo();
        void Toma_Nombre( string nombre ) { m_nombre = nombre ;}
        void Toma_Provincia( string  provincia) { m_provincia = provincia ;}
        void Toma_Trabajo ( string trabajo ) { m_trabajo = trabajo ;}
        void Toma_ID ( int ID ) { m_ID = ID ;}
        string Dame_Nombre( ){ return m_nombre ;}
        string Dame_Provincia( ){ return m_provincia ;}
        string Dame_Trabajo( ){ return m_trabajo ;}
        int Dame_ID( ){ return m_ID ;}
};


void Empleado::ImprimirInfo( )
{
   cout << "Nombre: " << m_nombre << '\n';
   cout << "Provincia: " << m_provincia << '\n';
   cout << "Puesto: " << m_trabajo << '\n';
   cout << "Salario: " << m_ID << '\n';
}
Empleado Agregar_Nuevo()
{
    Empleado nuevo_empleado;
    string name;
    string state;
    string job;
    int identification;


    cout<<"\nIngrese su nombre: ";
    scanf("%s",&name);
    cout<<"\nIngrese su provincia: ";
    scanf("%s",&state);
    cout<<"\nIngrese su puesto: ";
    scanf("%s",&job);
    cout<<"\nIngrese su ID: ";
    scanf("%d",&identification);


    nuevo_empleado.Toma_ID(identification);
    nuevo_empleado.Toma_Nombre(name);
    nuevo_empleado.Toma_Provincia(state);
    nuevo_empleado.Toma_Trabajo(job);

    return nuevo_empleado;
}

int main()
{
    string name;
    string state;
    string job;
    int identification=0;

    Empleado new_empleado;

    vector <Empleado> v;

    int menu=0;

    while (menu!=6)
    {
        cout<<"-------Menu Principal------\n"<<endl;//just a menu
        cout<<"1.Agregar Empleado"<<endl;
        cout<<"2.Eliminar Empleado"<<endl;
        cout<<"3.Modificar Empleado"<<endl;
        cout<<"4.Imprimir Empleado"<<endl;
        cout<<"5.Imprimir todos los empleados"<<endl;
        cout<<"6.Salir"<<endl;
        cout<<"\n En que opcion desea Ingresar: ";
        cin>>menu;
        switch(menu)
        {
        case 1:
            new_empleado=Agregar_Nuevo();// I think here is the problem
            cout<<"H"<<endl;
            v.push_back(new_empleado);
            cout<<"Agregado con exito"<<endl;
            break;
        case 2:

            cout<<"\nIngrese el ID a eliminar: ";
            scanf("%d",&identification);
            for (int i=0;i< v.size();i++)
            {
                v.at(i).ImprimirInfo();
            }
            break;
        case 3:
            cout<<"Modificar Empleado"<<endl;
            break;
        case 4:
            /*nuevo_empleado.Dame_Nombre();*/
            break;
        }
    }


    return 0;
    cin.get();
}

わかりました、私は C++ でのプログラミングが初めてです。AgregarEmpleados() などと呼ばれるメソッドに疑問があります。私は長い間これを解決しようとしてきましたが、結果はありませんでした。「ここに問題があると思います」という二重のコメントをしました。どこに問題があると思いますか。

4

1 に答える 1

2

std::stringを使用して読み取ることはできませんscanfscanf("%s", ...)を期待し、char*単純にポインタを渡すことはできませんstd::string。これは非常に異なるデータ構造です。簡単な修正は、次のように見える行を変更することです。

scanf("%s",&name);

これに:

std::cin >> name;

またはこれ:

std::getline(std::cin, name);
于 2012-09-04T04:36:45.597 に答える