![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
struct "a pelo"
Hola, no hay día que pase sin que me encuentre con cosas cada vez más extrañas (para mí). Se trata de lo siguiente:
Cita:
2) ¿Por qué me hace la advertencia de evitar el uso del keyword C++?¿qué leches es eso ![]() 3) ¿Me está diciendo algo especial protected y private? |
#2
|
||||
|
||||
Dios santo, lo que hay que ver. En serio que no tengo ni idea de para qué puede servir eso
![]() Las dos primeras líneas son "declaraciones por adelantado" (forward declaration) ya que se van a usar el tipo de dato en la definicion del propio tipo de dato. Con clases quizás se vea más claro: Si omitimos la declaración por adelantado, el compilador se quejará en la línea: Subclase : A porque no se ha terminado de definir el tipo de datos "A" y ya se está haciendo uso de él. La advertencia sobre "protected" keyword, es que quiere declarar uno de los campos con el nombre "protected" pero eso no está permitido porque es una palabra reservada del propio lenguaje C++, la solución pasa por añadir un guión bajo, de esa forma C++ no lo reconoce como una palabra reservada y puede compilarse. poquito enrevesado ¿qué no? ![]() Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
||||
|
||||
avanzamos
Gracias Lepe, ha estado bien la explicación, y me sirve. Lo de protected y private te iba a decir que en Delphi son palabras reservadas, pero aquí pues no estaba seguro, y el guion bajo pues como que me despistó un poco. Por otra parte, lo curioso de todo esto es que me he encontrado con una contradicción de lo más pura:
1) Si se hace una "declaración por adelantado" significaría que no necesitaría ser definido en otro sitio, sin embargo , para FLAC__StreamEncoderProtected sí que tengo en otro sitio la definición de ese registro. 2) Si entonces debería existir ambas declaraciones de registros por otra parte, así como la he encontrado para FLAC__StreamEncoderProtected, la debería encontrar para FLAC__StreamEncoderPrivate, ¿no? Si la respuesta es que "es que esto es privado y no lo ves", necesito que me argumenten un poco de qué va la película. ![]() |
#4
|
||||
|
||||
Las declaraciones por adelantado le dicen al compilador, "no te preocupes, mas adelante te diré lo que es, por ahora trabaja con esto y no lo consideres un error". Claro que debe estar declarado mas adelante, o de lo contrario el compilador dará el consiguiente error de compilación.
Si no has encontrado una declaración, no significa que no esté. Probablemente la encuentres en otro archivo cabecera. Private no significa que no la ves, sino que no se puede acceder a esos miembros (privados) desde fuera de la clase y, además, que si derivas una clase o estructura, ésta estructura derivada no ve los miembros privados de la clase madre. En todo momento las declaraciones deben existir. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comentario "aplastante" contra los que atacan la "piratería" | Casimiro Notevi | La Taberna | 12 | 07-03-2010 14:03:02 |
Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
¿cuál es mejor: "close" o "application.terminate"? | unreal4u | Varios | 5 | 05-03-2007 11:01:19 |
"ChequeaEsto" elegido el futuro "Killer CLubDelphi" | mamcx | Noticias | 51 | 31-10-2006 20:56:32 |
porque no me reconoce los caracteres "*" ni "%" cuando filtro | mrmago | Conexión con bases de datos | 10 | 27-01-2006 04:21:16 |
![]() |
|