Usuario: anónimo

Usuarios en línea: 1
Invitados: 1

FAQ

Mensaje

1213m
Re: Gracias me aydais un monton
M(Steven Davidson) 2017-12-09 19:35:43  H

Hola Colegio,

Primeramente, no hablamos mucho de las tablas de funciones virtuales

porque, se trata de una implementación del lenguaje. La gramática no

especifica la implementación de los conceptos del lenguaje de programación,

por lo que puede existir varias implementaciones. En otras palabras, puede

haber una implementación que no use una tabla virtual, o quizás en un

futuro se use más de una tabla. Es cierto que, en estos momentos, la

mayoría de compiladores usa tablas virtuales. La otra razón de no hablar

mucho de tablas virtuales es porque un programador de C++ no usa las tablas

explícitamente, mientras que el sistema de polimorfismo (dinámico) sí.

En segundo lugar, no he tenido ningún error acerca de la inexistencia de

las tablas virtuales. Posiblemente tengas algún problema con la

configuración del compilador. Intenta crear el proyecto de nuevo o revisa

las opciones.

Por último, el código fuente que envías tiene algunos errores; esto es,

- En el fichero, "main.cpp", incluyes el fichero de cabecera y el fichero

fuente; esto es,

#include "hospi.hpp"

#include "hospi.cpp"

Sólo tienes que incluir el fichero de cabecera. En este caso, debes

compilar ambos ficheros fuente: "main.cpp" y "hospi.cpp".

- El error original es en la implementación de 'get()'. Escribes,

dis::Bdisco::Ddisco* dis::lista::get()

{

  return *Disco;

}

Estás retornando un objeto, cuando la función miembro requiere retornar un

puntero. Deberías escribir:

dis::Bdisco::Ddisco* dis::lista::get()

{

  return *Disco;

}

- En la implementación del constructor, 'lista(int n)', escribes,

for( int i = 0; i < n; i++ )

{

  Disco = new Ddisco[i];

}

Creas varios arrays dinámicos que se pierden, excepto el último. Lo más

seguro es que querías crear un solo array dinámico; esto es,

Disco = new Ddisco[n];

- No has implementado el destructor para 'lista', por lo que no puedes

liberar la memoria previamente creada dinámicamente. Es decir, deberías

escribir,

Espero que esto aclare las dudas.

Steven

2017-12-08 6:23 GMT-05:00 colegio4497 <colegio4497@disroot.org>:

>  El chico de las preguntas:

>  Tengo dos sugerencias una es poner mas documentacion sobre las vtables i

>  el polimorfismo ya que sin eso no se pueden resolver las dudas cuando te

>  sale que las vtables no se pueden contruir. Tengo alguna documentacion que

>  adjunto pero insuficiente:

>  http://arco.esi.uclm.es/~david.villa

>  Este es el codigo que no puede resolver(me sale que las vtables son

>  inexistentes):

>  https://github.com/codigopublico/Git/tree/capitulo17

>  Otra es simplemente es que para el concurso i si puedo falta de tiempo

>  hare un make un proyecto nuevo para poder picar codigo sin preucparte

>  demaciado de como esta echo el anteririor un paquete.

>

>  Gracias:

>  Simpre con preguntas i pocas respuestas........:(.

>

>

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ