2015-11-19 1 views
1

ПОМОЩЬ! Прежде всего, извините за мой плохой английский ... Но, мой ум заблокирован! Я должен создать класс с использованием карты, и я сделал, но я не могу показать его, я могу вставить, но он ничего не показывает.Как создать класс с MAP? C++

Посмотрите:

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

Вы ссылаетесь на автоматические локальные переменные вместо членов класса. – Lingxi

ответ

0

Внутри AutoServicio::AgregarCliente(), удалите это:

map <string,string> clientes; 

и удалить этот

map <string, string> autos; 

и удалить этот

map <string, string> tipcolor; 

и удалить этот

map <string, string> numeros; 

C++ позволит вам иметь разные переменные с тем же именем. Поскольку у вас есть локальная переменная с именем numeros (и т. Д.), Когда вы говорите numeros внутри этой функции, вы говорите о локальной переменной, а не о переменной-члене, хотя вам нужна переменная-член.

+0

Спасибо, очень! Несколько дней назад я не знал, как использовать «карту», ​​теперь я могу дышать, потому что код может компилироваться. – Vivie

Смежные вопросы