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)
| | |-+  template en function [codigo]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: template en function [codigo]  (Leído 1,379 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
template en function [codigo]
« en: 13 Febrero 2016, 13:32 pm »

Saludo a todos !!

Con el proposito de aprender estructura de datos estoy haciendo una clase para tener una especie de lista enlazadas , estoy usando template y como todos sabemos los templates se deben definir dentro del mismo header(c++98) entonces le cuento tengo una estructura llamado nodo que esta basada en plantilla y tiene de variables , un puntero al nodo siguiente y el dato a almacenar en esa instancia, luego tengo la clase lista que tiene el nodo a la cabeza de node y tengo una funcion que me devuelve un nodo
el problema me lo da al compilar

es el siguiente :
../src/LinkList.h:66:50: error: invalid cast from type ‘Object’ to type ‘void*’
         head_traits = (T) createNode((void *)data);


me gustaira saber si hay perdidas de datos cuando forzo a compilar  con static_cast<void *> , el codigo solo compilar si uso eso si no :D es otra cosa. dejare  el codigo...
Código
  1.  
  2.  
  3. #define DEBUG 1
  4.  
  5. Node_traits<void*>* createNode(void *cr_dat)
  6. {
  7.  
  8. #ifdef DEBUG
  9.    clog << "__FUNCTION__"<<__FUNCTION__<<endl;
  10. #endif
  11.  
  12. Node_traits<void*> *ret = new Node_traits<void*>();
  13.    memcpy(ret->data, cr_dat, sizeof(cr_dat));
  14.    ret->next_ptr_traits = NULL;
  15.    return ret;
  16. }
  17.  
  18.  
  19.  
  20. template<class T>
  21. struct Link_List
  22. {
  23. int cnt;
  24.    Node_traits<T> *head_traits;
  25.  
  26.  
  27.    void CreateList(T data)
  28.    {
  29.        head_traits = (T) createNode((void *)data);
  30.    }
  31.  
  32.  
  33.  
  34. };
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  

gracias de antemano.!!


En línea

gracias por responder mis dudas
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: template en function [codigo]
« Respuesta #1 en: 13 Febrero 2016, 14:15 pm »

creo que tendría que ser con el puntero a data, es decir.
Código:
head_traits = (T) createNode((void *)&data);
con static_cast<void*> tambié dará el mismo error
Código
  1. class Objeto {
  2. };
  3.  
  4. int main() {
  5.  Objeto a;
  6.  void* x = (void*)&a;
  7.  void* y = static_cast<void*>(&a);
  8.  
  9.  void* xx = (void*)a; //Invalid cast from Objeto to void*
  10.  void* yy = static_cast<void*>(a); //Invalid static_cast from Objeto to void*
  11. }
con los casts de C++ como static_cast no fuerzas nada, solo muestras explícitamente el tipo de cast que estas haciendo para que sea más legible

A modo de aclaración, del libro de "The C++ Programming language de Stroustrup sobre los "C-style cast"
Citar
From C, C++ inherited the notation(T)e, which performs any conversion that can be expressed as a
combination ofstatic_casts,reinterpret_casts,const_casts to make a value of typeT from the
expressione(§44.2.3). Unfortunately, the C-style cast can also cast from a pointer to a class to a
pointer to a private base of that class. Never do that, and hope for a warning from the compiler if
you do it by mistake. This C-style cast is far more dangerous than the named conversion operators
because the notation is harder to spot in a large program and the kind of conversion intended by the
programmer is not explicit. That is,(T)e might be doing a portable conversion between related
types, a nonportable conversion between unrelated types, or removing theconstmodif i er from a
pointer type. Without knowing the exact types ofTande, you cannot tell.



« Última modificación: 13 Febrero 2016, 14:26 pm por Stakewinner00 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No me va (Function)
PHP
Erik# 5 2,915 Último mensaje 20 Noviembre 2008, 20:48 pm
por Erik#
Function FileCreate [VB6]
Programación Visual Basic
The Swash 0 1,545 Último mensaje 22 Enero 2010, 17:53 pm
por The Swash
FiletoString Function [VB6]
Programación Visual Basic
The Swash 4 4,782 Último mensaje 9 Abril 2010, 06:55 am
por BlackZeroX
[C] PEFileSize function
Programación C/C++
The Swash 4 3,022 Último mensaje 27 Enero 2011, 01:16 am
por The Swash
Me podeis explicar este pequeño codigo?. " Llamar a function shellexecute "
Programación C/C++
70N1 3 3,259 Último mensaje 20 Diciembre 2014, 20:23 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines