elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con variable privada
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con variable privada  (Leído 2,265 veces)
BeLGaRioN

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Problema con variable privada
« en: 30 Enero 2012, 19:21 pm »

Hola, bueno el tema es que las variables de tipo string que he declarado como privadas, no puedo modificarles el valor. Durante la ejecución me da un segmentation fault y estoy intentando modificar su valor desde la propia clase, así que no lo entiendo. Si la variable es pública, sin ningún problema, pero ese no es el chiste, a ver si alguien da con mi error que ahora no lo veo.

Gracias de antemano,

Belgarion.

Citar
#include <iostream>
#include <string>
#define MAXCLIENTES 10

using namespace std;

class Cliente {
private:
    string apellido;
    string dni;
    float facturacion;
public:
    string getApellido();
    void setApellido(const string &cadena);
    string getDni();
    void setDni(const string &cadena);
    float getFacturacion();
    void setFacturacion(const float &numero);
};

string Cliente::getApellido() {
    return apellido;
}

void Cliente::setApellido(const string &cadena){
    apellido.assign(cadena);
}

string Cliente::getDni() {
    return dni;
}

void Cliente::setDni(const string &cadena){
    dni.assign(cadena);
}

float Cliente::getFacturacion() {
    return facturacion;
}

void Cliente::setFacturacion(const float &numero){
    facturacion = numero;
}

int main()
{
    Cliente clientes[MAXCLIENTES];
    int cliente = 0;
    int opcion = 0;
    string auxiliar;
    float auxiliar2;
    char salir = 'S';

    while(salir != 'N' || salir != 'n') {

        cout << "Bienvenido. Inserta el numero del cliente a modificar" << endl;
        cin >> cliente;

        cout << "Ahora selecciona la tarea que deseas realizar" << endl;
        cout << "1 - Consultar apellido" << endl;
        cout << "2 - Modificar apellido" << endl;
        cout << "3 - Consultar dni" << endl;
        cout << "4 - Modificar dni" << endl;
        cout << "5 - Consultar facturacion" << endl;
        cout << "6 - Modificar facturacion" << endl;
        cin >> opcion;

        switch (opcion){
            case 1:
                cout << "El apellido del cliente es: " << clientes[MAXCLIENTES].getApellido() << endl;
                break;
            case 2:
                cout << "Introduce el nuevo apellido del cliente: ";
                cin >> auxiliar;
                clientes[MAXCLIENTES].setApellido(auxiliar);
                break;
            case 3:
                cout << "El dni del cliente es: " << clientes[MAXCLIENTES].getDni() << endl;
                break;
            case 4:
                cout << "Introduce el nuevo dni del cliente: ";
                cin >> auxiliar;
                clientes[MAXCLIENTES].setDni(auxiliar);
                break;
            case 5:
                cout << "La facturacion del cliente es: " << clientes[MAXCLIENTES].getFacturacion() << endl;
                break;
            case 6:
                cout << "Introduce el nuevo dato de facturacion del cliente: ";
                cin >> auxiliar2;
                clientes[MAXCLIENTES].setFacturacion(auxiliar2);
                break;
        }
        cout << "Deseas continuar?" << endl;
        cin >> salir;
    }
}


En línea

Comunidad hispana dedicada a la Plataforma Steam | http://www.plataformasteam.com
Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Problema con variable privada
« Respuesta #1 en: 30 Enero 2012, 19:42 pm »

Fíjate en el main, dentro del switch... el error es un poco tonto: entre todos los corchetes has puesto MAXCLIENTES en lugar de cliente, que es la variable en que se ha guardado el número introducido por el usuario. El fallo no tenía nada que ver con los atributos privados de la clase. Estabas accediendo todo el rato a una zona de memoria no inicializada, por eso lo de Segmentation Fault.

EDITO: Y por cierto, tienes otro error. En el while deberías poner and en lugar de or. Y por lo que más quieras, estás en C++, aquí puedes usar las palabras and y or, no uses || ni &&.

¡Saludos!


« Última modificación: 30 Enero 2012, 19:46 pm por Xandrete » En línea

BeLGaRioN

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Re: Problema con variable privada
« Respuesta #2 en: 30 Enero 2012, 19:45 pm »

Fíjate en el main, dentro del switch... el error es un poco tonto: entre todos los corchetes has puesto MAXCLIENTES en lugar de cliente, que es la variable en que se ha guardado el número introducido por el usuario. El fallo no tenía nada que ver con los atributos privados de la clase. Estabas accediendo todo el rato a una zona de memoria no inicializada, por eso lo de Segmentation Fault.

¡Saludos!

Justo me acababa de dar cuenta. En fin, cuando los fallos se alargan tanto casi siempre son tonterías de estas que me suceden.

En cualquier caso, muchísimas gracias.

Un saludo,

Belgarion.
En línea

Comunidad hispana dedicada a la Plataforma Steam | http://www.plataformasteam.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines