elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  C++. Cargar una matriz de struct usando archivos de cabeceras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C++. Cargar una matriz de struct usando archivos de cabeceras  (Leído 3,303 veces)
LeoXsiempre

Desconectado Desconectado

Mensajes: 9


Ver Perfil
C++. Cargar una matriz de struct usando archivos de cabeceras
« en: 8 Abril 2015, 03:07 am »

Hola estoy trabajando es c++ desde hace poco tiempo, quise hacer algo mas jugado, pero nose que estoy haciendo mal. Arme una matriz de struct pero nose si estoy usando mal las cabeceras o utilizando mal los typedef. Si alguien me puede ayudar se lo agradecería mucho.
En funciones.h tengo:

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

typedef struct {int padron; string nombre;}datos;
typedef datos alumno[2][2];

void cargarmatriz(alumno alu);
void imprime(alumno alu);

En funciones.cpp tengo:

#include <iostream>
#include <string>
#include <cstdlib>
#include "funciones.h"


using namespace std;


void cargarmatriz(alumno alu)
{
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<2; j++)
        {
            cout << "padron: " << endl;
            cin >> alu[j].padron;
            cout << "nombre " << endl;
            cin >> alu[j].nombre;
            cout << endl;
        }
    }
}

void imprime(alumno alu)
{
    for(int r=0; r<2; r++)
    {
        for(int t=0; t<2; t++)
        {
            cout << alu[r][t].padron << endl;
            cout << alu[r][t].nombre << endl;
        }
    }
}

Y finalmente en main.cpp:

#include <iostream>
#include <string>
#include <cstdlib>
#include "funciones.h"

using namespace std;

int main()

{
    typedef struct {int padron; string nombre;}datos;
    typedef datos alumno[2][2];

    alumno alu;

    cargarmatriz(alu);
    imprimir(alu);
    return 0;
}

El error me lo marca en cargarmatriz y el mensaje es:
...main.cpp|26|error: cannot convert 'main()::datos (*)[2]' to 'datos (*)[2]' for argument '1' to 'void cargarmatriz(datos (*)[2])'|


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: C++. Cargar una matriz de struct usando archivos de cabeceras
« Respuesta #1 en: 8 Abril 2015, 08:17 am »

Bienvenido al foro.

Lo primero, el código lo tienes que decorar con las etiquetas GeSHi. Son las normas del foro y, además, mejora su legibilidad.

Un consejo: en C++ no hace falta usar typedef para declarar las estructuras o las clases. Las dos líneas de código siguientes son equivalentes en C++:

Código
  1. typedef struct {int padron; string nombre;}datos;
  2. struct datos{int padron; string nombre;};

Vamos con tu error. A ver, typedef se usa para definir un alias... si el alias lo defines en un archivo de cabecera, todos los ficheros que incluyan dicha cabecera tendrán acceso a dicho alias.

En tu caso el problema es que estás definiendo dos veces el alias "datos"... uno a nivel global y otro dentro del main. El conflicto que esto genera se basa en que el alias del main únicamente tiene validez dentro del main... y no solo eso... no solo su ámbito es diferente, también lo es su "nombre interno" de cara al compilador C++:

Citar
main.cpp|26|error: cannot convert 'main()::datos (*)[2]' to 'datos (*)[2]' for argument '1' to 'void cargarmatriz(datos (*)[2])'|

es básicamente lo que te está diciendo el mensaje de error... no sabe cómo convertir main::datos a ::datos.

La solución es tan simple como quitar el typedef del main.

Un saludo.


En línea

LeoXsiempre

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: C++. Cargar una matriz de struct usando archivos de cabeceras
« Respuesta #2 en: 10 Abril 2015, 00:34 am »

AAh listo, a seguir practicando entonces.
Muchas gracias.
Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cargar una matriz de forma recursiva[c]
Programación C/C++
axeelcs 3 13,040 Último mensaje 1 Septiembre 2011, 20:43 pm
por LearningSpanishProgrammer
Pilas C++ usando Estructuras (STRUCT) « 1 2 »
Programación C/C++
charmedever 13 15,935 Último mensaje 21 Noviembre 2011, 21:11 pm
por x64core
Un struct dentro de una matriz
Programación C/C++
freakx 2 6,378 Último mensaje 23 Enero 2012, 02:16 am
por freakx
cargar struct dentro de una matriz
Programación C/C++
eriss_15 1 2,898 Último mensaje 18 Mayo 2012, 06:33 am
por exel
Problemas con programa usando struct
Programación C/C++
Fyllio 2 2,388 Último mensaje 28 Noviembre 2013, 22:30 pm
por Fyllio
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines