(SOLUCIONADO) Ayuda con los structs

Iniciado por BlackM4ster, 22 Marzo 2013, 16:54 PM

0 Miembros y 1 Visitante están viendo este tema.

85

el objeto debe ser declarado antes de usar 'extern'.
declaralo en algún archivo .cpp que incluya el acceso a la clase o struct.
después podés usar así:

extern Objeto objeto[5000];

en otros archivos, para referenciar a un objeto existente en otro archivo.

pero en la declaración no se puede hacer esto:
Objeto Objeto[5000];

tiene el mismo nombre que la clase o struct, por eso ponelo así:
Objeto objeto[5000];
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

BlackM4ster

#11
No consigo que funcione. Solo quiero tener un header con el struct y usar los datos desde cualquier .cpp

Con este code no da error de struct pero si de objetostotales

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;

struct Objeto objeto[5000];// Declaración, no va con extern!
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
C:\Documents and Settings\isc\Mis documentos\Visual Studio 2008\Projects\Structs\Debug\Structs.exe : fatal error LNK1169: se encontraron uno o más símbolos definidos simultáneamente
- Pásate por mi web -
https://codeisc.com

85

claro el error era el mismo nombre de la clase o struct con el del registro o variable. Ahora deberías usar extern con esa variable que decís también.

struct.h
extern int ObjetosTotales;


main.cpp
int ObjetosTotales = 0;


como ves, la asignación de valor no se incluye cuando se usa 'extern'.
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

BlackM4ster

MUCHISIMAS GRACIAAAS YA LO HE CONSEGUIDO GRACIAS !!!!!
un link a el juego que estoy creando a ver que te parecec jaaja: https://www.dropbox.com/s/0m9mhmrgmhmt7an/Juego%20Isc.rar
- Pásate por mi web -
https://codeisc.com