Tengo un código C que debo transferir a C++. El código tiene una estructura¿Declaraciones a futuro para variables?
struct A {
...
struct A * myPtr;
}
Y ahora dos matrices globales se declaran e inicializan como esto:
//Forward declaration of Unit
struct A Unit[10];
struct A* ptrUnit[2] = { Unit, Unit+7 };
struct A Unit[10] = { { .., &ptrUnit[0] },
... };
Ahora bien, aunque esto funciona bien en C, que da un error en C++ (variable redeclarada). ¿No se permite que las variables sean declaradas hacia adelante en C++?
Ver [esta respuesta] (http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration/1410632#1410632) para obtener más detalles sobre las declaraciones y definiciones. – sbi
su afirmación sobre 'el mismo espacio de nombres' no es completamente correcta. Una definición 'struct A' tiene una' implícita 'typedef struct A A' como consecuencia, si el identificador' A' no está definido en el mismo ámbito. Algo como 'struct A {...} A;' es completamente legal en C++, y luego 'A' (sin' struct') se refiere al objeto. Sin embargo, que esto sea posible no significa que este sea un buen estilo. En POSIX tienes eso, por ejemplo, con el archivo de encabezado "sys/stat.h" que define 'struct stat' y la función' stat'. –
@Jens: No estoy seguro de los detalles legales de esto, pero parece que tiene sentido. Edité mi respuesta en consecuencia. – sbi