C/Visual C - Ayuda Urgente

 
Vista:

Ayuda Urgente

Publicado por Helena (6 intervenciones) el 27/06/2006 19:48:05
Hola!!!!!!

Tengo el siguiente codigo y me da un error en la funcion virtual, no se que será:

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

class Cliente
{
public:
int codigo;
string nombre;
string residencia;
string telefono;

virtual void situacion{};

public:
Cliente (int cod, string nom, string res, string tel): codigo(cod), nombre(nom), residencia(res), telefono(tel){}

string getResidencia()
{
return residencia;
}

void setResidencia()
{
string resd;
residencia = resd;
cout <<resd <<endl;
}

string getnombre()
{
return nombre;
}

};
class Cli_Credito : public Cliente
{
public:
float saldo;
float tasa_interes;

void situacion()
{
cout <<"Nombre: " <<nombre <<"Credito"<< saldo << endl;
}

int getSaldo()
{
return saldo;
}

float abono(float abono)
{
saldo = saldo - abono;

return saldo;
}

float prestamo(float prestamo)
{
saldo = saldo + prestamo;
}

};
class Cli_Frecuente: public Cliente
{
public:
int puntos_acumulados;
int puntos_gastados;
int compras_realizadas;

void situacion()
{
int total_puntos;

total_puntos= puntos_acumulados - puntos_gastados;

cout << "Nombre: " <<nombre <<"Frecuente" << total_puntos <<endl;
}

int sumaPuntos (int suma)
{
suma = puntos_acumulados + puntos_acumulados;
return suma;
}

int restaPuntos (int resta)
{
resta = puntos_acumulados - puntos_acumulados;
return resta;
}

int acumula (int acumula)
{
acumula = compras_realizadas + 1;
return acumula;
}
};
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda Urgente

Publicado por Helena (6 intervenciones) el 27/06/2006 22:49:03
Me dice que la sentencia de la funcion virtual es incorrecta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente

Publicado por fernando.gomez (1603 intervenciones) el 28/06/2006 00:02:59
¿Podrías ser un poco más específica? A grosso modo calculo que debe haber unas 73 razones por las que una función virtual es incorrecta. ¿Podrías copy+paste el error completito que da tu compilador? ¿Qué compilador empleas? ¿Te dá algún otro error?

Digo, esto porque revisé tu código y parece estar bien. Hay EMHO algunos errorcillos de diseño (i.e. de nada te sirve tener una función GetAlgo que regresa la varialbe m_algo, si m_algo es pública; no hay encapsulamiento), pero no parece haber un error relacionado a la función virtual (bueno, las clases derivadas no declaras la función que heredas como virtual, pero bueno...). De ahí que te pregunte por un mayor detalle.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente

Publicado por Helena (6 intervenciones) el 28/06/2006 00:19:58
Compiling...
cliente.cpp
E:\Examen\cliente.cpp(15) : error C2182: 'situacion' : illegal use of type 'void'
E:\Examen\cliente.cpp(15) : error C2433: 'situacion' : 'virtual' not permitted on data declarations
Error executing cl.exe.

cliente.obj - 2 error(s), 0 warning(s)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente

Publicado por fernando.gomez (1603 intervenciones) el 28/06/2006 00:48:26
Ea, ¿ya ves? No estaba tan errado. Con "virtual' not permitted on data declarations " debería haber sido más que suficiente para darnos cuenta del problema :P

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente

Publicado por fernando.gomez (1603 intervenciones) el 28/06/2006 00:09:42
Jajaja, ya ví por qué. Llevo rato dándole vueltas, y nada, pero ahorita acabo de ver el error. En la clase Cliente, declaras:

virtual void situacion{}; // 15 línea

El compilador supone que situacion es una variable porque se te fué ponerle el ( ). Y pues una variable no puede ser virtual. Si cambias a

virtual void situacion( ) {};

ya no tendrás problemas.

Este problema con Visual C++ 6, me dió diez errores. El primero y segundo son:

C:\temp\Helena\Helena.cpp(20) : error C2182: 'situacion' : illegal use of type 'void'

C:\temp\Helena\Helena.cpp(20) : error C2433: 'situacion' : 'virtual' not permitted on data declarations

Con esto hubiese sido más que suficiente para saber el problema. Bueno, con eso y el haberme yo dado cuenta antes de esto :P

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente

Publicado por Helena (6 intervenciones) el 28/06/2006 03:27:35
Hola!!

Te agradezco mucho que me hayas ayudado con esto. Cualquier otra pregunta, te puedo escribir, cual es tu email? Es que vieras que yo estoy aprendiendo c++, pero lo veo muy dificil.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente

Publicado por fernando.gomez (1603 intervenciones) el 28/06/2006 07:21:15
Clarines, me puedes escribir a fernando.a.gomez.f@gmail preferentemente, ya que la cuenta de [email protected] la reviso muy de vez en cuando.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar