2012-09-04 109 views
-3
#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()或類似的方法有疑問。我一直試圖解決這個很長一段時間沒有結果。我做了一個雙線評論,說「我認爲這是問題。」我相信問題是。POO和STL向量(將對象添加到變量中)

+2

請建立您的問題用一個簡約編譯例子大小寫並在此處發佈該示例。 –

+1

1)首先,如果您有要分享的代碼,請將代碼與此處的問題一起發佈。不要讓用戶從第三方網站下載它。 2)如果你共享代碼,只分享它的相關部分,不要把整個文件3)試着把一些努力背後的問題,如果你想回答.. – Krishnabhadra

+0

@Cœur請不要碰撞舊的,封閉的,死的問題與微不足道的編輯。 –

回答

2

您無法使用scanf讀取std::stringscanf("%s", ...)預計char*,你不能簡單地將指針傳遞給std::string,這是一個非常不同的數據結構。速戰速決是改變看起來像這樣的臺詞:

scanf("%s",&name); 

這樣:

std::cin >> name; 

或本:

std::getline(std::cin, name); 
+0

Blastfurnace它的工作非常感謝! – 3MMM

+4

@MarianoMonteroMuñoz:不客氣。如果你正在學習'C++',最好堅持使用'C++'風格的I/O,而不是像'printf','scanf'等'C'函數混合。 – Blastfurnace

+0

再次感謝,我將使用你的推薦! – 3MMM