Autor
|
Tema: (SOLUCIONADO) Ayuda con los structs (Leído 6,238 veces)
|
BlackM4ster
Desconectado
Mensajes: 499
Error, el teclado no funciona. Pulse F1 para continuar
|
Estoy creando un juego, necesito un struct que almacene el id del objeto con sus caracteristicas. he creado un header y accediendo solo desde el main funciona bien pero cuando intento acceder a el struct desde otro .cpp falla: idobjeto.h int ObjetosTotales = 0;
struct Objeto{ float x, y, z; GLuint modelo; float t_x, t_y, t_z; int ang_x;
void Nuevo(GLuint vmodelo, float vx,float vy,float vz,int vang_x,float vt_x,float vt_y,float vt_z) { modelo = vmodelo; ang_x = vang_x; x = vx; t_x = vt_x; y = vy; t_y = vt_y; z = vz; t_z = vt_z; ObjetosTotales++; }
}Objeto[5000]; Como hago para poder acceder a el desde cualquier .cpp? uso vc++2008 Gracias de antemano porfavor las respuestas lo mas detalladas posibles
|
|
« Última modificación: 23 Marzo 2013, 14:30 pm por Black Master »
|
En línea
|
|
|
|
naderST
|
Declara el arreglo en el otro cpp usando el modificador extern de la siguiente manera y no debería darte problemas.
extern struct Objecto Objeto[5000];
|
|
|
En línea
|
|
|
|
BlackM4ster
Desconectado
Mensajes: 499
Error, el teclado no funciona. Pulse F1 para continuar
|
No se como usarlo, porfavor ayuda: Main.cpp #include "header.h" #include "struct.h"
using namespace std;
int Comprobar();
int main(){
cout << "asdasd" << endl; Objeto[ObjetosTotales+1].Nuevo(69,1,1,1,1,1,1,1); getch(); Comprobar(); getch();
return 0; } Struct.h #ifndef STRUCTOBJETO_H #define STRUCTOBJETO_H
int ObjetosTotales = 0;
struct Objeto{ float x, y, z; int modelo; float t_x, t_y, t_z; int ang_x;
void Nuevo(int vmodelo, float vx,float vy,float vz,int vang_x,float vt_x,float vt_y,float vt_z) { modelo = vmodelo; ang_x = vang_x; x = vx; t_x = vt_x; y = vy; t_y = vt_y; z = vz; t_z = vt_z; ObjetosTotales++; } };
extern Objeto Objeto[5000];
#endif añadir.cpp #include "header.h" #include "struct.h"
using namespace std;
extern struct Objeto Objeto[5000];
int Comprobar(){ if(Objeto[ObjetosTotales].modelo == 69){ return 1;}
return 0; } Resultado: Vinculando... anadir.obj : error LNK2005: ya se definió "int ObjetosTotales" (?ObjetosTotales@@3HA) en main.obj struct.obj : error LNK2005: ya se definió "int ObjetosTotales" (?ObjetosTotales@@3HA) en main.obj main.obj : error LNK2001: símbolo externo "struct Objeto * Objeto" (?Objeto@@3PAU0@A) sin resolver anadir.obj : error LNK2001: símbolo externo "struct Objeto * Objeto" (?Objeto@@3PAU0@A) sin resolver
|
|
|
En línea
|
|
|
|
85
|
Borrá esta línea #include "header.h" #include "struct.h"
using namespace std;
extern struct Objeto Objeto[5000];
int Comprobar(){ if(Objeto[ObjetosTotales].modelo == 69){ return 1;}
return 0; }
|
|
|
En línea
|
|
|
|
BlackM4ster
Desconectado
Mensajes: 499
Error, el teclado no funciona. Pulse F1 para continuar
|
sigue fallando. Msn: blackm4ster@gmail.comDa el mismo error
|
|
|
En línea
|
|
|
|
85
|
dejá la anterior y borrá la otra. No se puede las 2
|
|
|
En línea
|
|
|
|
BlackM4ster
Desconectado
Mensajes: 499
Error, el teclado no funciona. Pulse F1 para continuar
|
mm no te entiendo, de que archivo borro la linea extern struct Objeto Objeto[5000];
|
|
|
En línea
|
|
|
|
85
|
dahh le pusiste el mismo nombre que la clase? no se puede eso ponelo así, ves la minúscula en el nombre? tenés que declararlo en algún archivo .cpp y luego en algún archivo de inclusión .h lo ponés como extern. Esto significa que cuando el objeto se use en un archivo.cpp se hace una referencia al objeto que fue declarado en otro archivo .cpp.
|
|
« Última modificación: 26 Marzo 2013, 18:08 pm por 85 »
|
En línea
|
|
|
|
BlackM4ster
Desconectado
Mensajes: 499
Error, el teclado no funciona. Pulse F1 para continuar
|
a ver sigue sin funcionar: struct.h #ifndef STRUCTOBJETO_H #define STRUCTOBJETO_H
int ObjetosTotales = 0;
struct Objeto{ float x, y, z; int modelo; float t_x, t_y, t_z; int ang_x;
void Nuevo(int vmodelo, float vx,float vy,float vz,int vang_x,float vt_x,float vt_y,float vt_z) { modelo = vmodelo; ang_x = vang_x; x = vx; t_x = vt_x; y = vy; t_y = vt_y; z = vz; t_z = vt_z; ObjetosTotales++; } };
extern Objeto objeto[5000];
#endif main.cpp #include "header.h" #include "struct.h"
using namespace std;
int Comprobar();
int main(){
cout << "asdasd" << endl; objeto[ObjetosTotales+1].Nuevo(69,1,1,1,1,1,1,1); getch(); Comprobar(); getch();
return 0; } anadir.cpp #include "header.h" #include "struct.h"
using namespace std;
int Comprobar(){ if(objeto[ObjetosTotales].modelo == 69){ return 1;}
return 0; } Errores: Vinculando... anadir.obj : error LNK2005: ya se definió "int ObjetosTotales" (?ObjetosTotales@@3HA) en main.obj struct.obj : error LNK2005: ya se definió "int ObjetosTotales" (?ObjetosTotales@@3HA) en main.obj main.obj : error LNK2001: símbolo externo "struct Objeto * objeto" (?objeto@@3PAUObjeto@@A) sin resolver anadir.obj : error LNK2001: símbolo externo "struct Objeto * objeto" (?objeto@@3PAUObjeto@@A) sin resolver C:\Documents and Settings\isc\Mis documentos\Visual Studio 2008\Projects\Structs\Debug\Structs.exe : fatal error LNK1120: 1 externos sin resolver
|
|
|
En línea
|
|
|
|
naderST
|
Advertencia - mientras estabas escribiendo, fueron publicadas 3 respuestas. Probablemente desees revisar tu mensaje.Ejemplo sencillo: archivo1.cpp #include <iostream> struct Objeto { int a,b,c,d; } Objeto[5000]; int main() { cout << "Hello world!" << endl; return 0; }
archivo2.cpp extern struct Objeto { int a,b,c,d; } Objeto[5000]; void funcion() { // ... }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda con structs C/C++
« 1 2 »
Programación C/C++
|
SARGE553413
|
13
|
8,326
|
21 Junio 2013, 18:50 pm
por pacoperico
|
|
|
Problema structs
Programación C/C++
|
Ccomplica
|
1
|
2,114
|
30 Octubre 2013, 05:53 am
por edr89
|
|
|
Imprimir array de Structs
Programación C/C++
|
dennis094
|
3
|
2,752
|
17 Enero 2014, 02:09 am
por rir3760
|
|
|
[SOLUCIONADO ]Structs Dinamicas
Programación C/C++
|
Xenomorfo77
|
6
|
2,578
|
7 Mayo 2014, 01:18 am
por Eternal Idol
|
|
|
Ayuda con un programa en C basicamente structs
Programación C/C++
|
ericomaniaco
|
2
|
1,647
|
30 Noviembre 2016, 02:31 am
por ericomaniaco
|
|