2012-09-04 45 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