如何使用MAP创建CLASS? C ++

时间:2015-11-19 02:55:47

标签: c++ class dictionary

帮助!首先,抱歉我的英语不好......但是,我的思绪被封锁了! 我已经使用地图创建了一个课程,我做了但我无法展示,我可以插入,但它没有显示任何内容。

看看:

class Cliente{
private:
    map <string, string> clientes;
    map <string, string> autos;
    map <string, string> tipcolor;
    map <string, string> numeros;
    friend class AutoServicio; 

class AutoServicio{ 
private:
      int i; 
public:
      AutoServicio();
      void MostrarClientes();
      void AgregarCliente();
};

AutoServicio::AutoServicio(){
i=0;
}

void AutoServicio::AgregarCliente(){
   string nombre, telefono, marca, modelo, tipo, color, placa, kilometros;
   map <string,string> clientes;
    cout << "Nombre: ";
    cin >> nombre;
    cout << "Teléfono: ";
    cin >> telefono;
    clientes.insert(pair <string, string>(nombre, telefono)); 
    clientes.insert(make_pair(nombre, telefono));

map <string, string> autos;
    cout << "Marca: ";
    cin >> marca;
    cout << "Modelo: ";
    cin >> modelo;
    autos.insert(pair <string, string>(marca, modelo));          
    autos.insert(make_pair(marca, modelo));
map <string, string> tipcolor;
    cout << "Tipo: ";
    cin >> tipo;
    cout << "Color: ";
    cin >> color;
    tipcolor.insert(pair <string, string>(tipo, color));          
    tipcolor.insert(make_pair(tipo, color));
map <string, string> numeros;
    cout << "Placa: ";
    cin >> placa;
    cout << "Kilómetros: ";
    cin >> kilometros;
    numeros.insert(pair <string, string>(placa, kilometros));          
    numeros.insert(make_pair(placa, kilometros));
    cout << "\n";   
}

void AutoServicio::MostrarClientes(){ // **HERE IS MY PROBLEM! IT DOESN'T SHOW**
map <string,string> clientes;
map<string, string>::iterator p = clientes.begin();
    cout << "Datos del cliente: ";
    while (p != clientes.end() ){
        cout << "\nNombre: " << p->first <<"\nTelefono: "<< p->second << endl;
        p++;
    }
map <string,string> autos;
map<string, string>::iterator p2 = autos.begin();
    cout << "\nDatos del auto: ";
    while (p2 != autos.end() ){
        cout << "\nMarca: " << p2->first <<"\nModelo: "<< p2->second << endl;
        p2++;
    }
map <string,string> tipcolor;
map<string, string>::iterator p3 = tipcolor.begin();
    while (p3 != tipcolor.end() ){
        cout << "\nTipo: " << p3->first <<"\nColor: "<< p3->second << endl;
        p3++;
    }

map <string,string> numeros;
map<string, string>::iterator p4 = numeros.begin();
    while (p4 != numeros.end() ){
        cout << "\nPlaca: " << p4->first <<"\nKilómetros: "<< p4->second << endl;
        p4++;
    }    
}

感谢!!!

1 个答案:

答案 0 :(得分:0)

AutoServicio::AgregarCliente()内删除此内容:

map <string,string> clientes;

并删除此

map <string, string> autos;

并删除此

map <string, string> tipcolor;

并删除此

map <string, string> numeros;

C ++将允许您使用相同名称的不同变量。因为你有一个名为numeros(等)的局部变量,当你在该函数中说numeros时,你正在谈论局部变量,而不是成员变量,即使你想要成员变量