[C con Clase] Gracias me aydais un monton

Davidson, Steven srd4121 en njit.edu
Sab Dic 9 20:35:43 CET 2017


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 en 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........:(.
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20171209/76818e46/attachment.html>


Más información sobre la lista de distribución Cconclase