C/Visual C - include ",,,,,.h"

 
Vista:

include ",,,,,.h"

Publicado por forzabiaggi (36 intervenciones) el 28/06/2001 18:01:36
Hola!

#include <hash_map.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct eqstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) == 0;
}
};


hash_map<const char*, int, hash<const char*>, eqstr> months;



months["may"] =31;
months["june"] =5;
............................................................
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Quiero tener la tabla hash en un .h, pero no me deja hacer
months["may"] =31; en el .h.




Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema al utilizar una tabla hash en un archivo .h

Publicado por Alejandro (913 intervenciones) el 27/09/2024 18:10:09
El problema que estás enfrentando es que no puedes utilizar la asignación `months["may"] = 31;` en un archivo .h. Esto se debe a que los archivos de encabezado (.h) generalmente se utilizan para declarar estructuras, funciones y variables, pero no para realizar asignaciones o ejecutar código.

Para solucionar este problema, puedes declarar la tabla hash en el archivo .h y luego inicializarla en un archivo de código fuente (.c o .cpp). Aquí tienes un ejemplo de cómo hacerlo:

En el archivo .h:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef HASH_TABLE_H
#define HASH_TABLE_H
 
#include <hash_map.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
struct eqstr
{
    bool operator()(const char* s1, const char* s2) const
    {
        return strcmp(s1, s2) == 0;
    }
};
 
extern hash_map<const char*, int, hash<const char*>, eqstr> months;
 
#endif

En el archivo .c o .cpp:
1
2
3
4
5
6
7
8
9
#include "hash_table.h"
 
hash_map<const char*, int, hash<const char*>, eqstr> months;
 
void initializeMonths()
{
    months["may"] = 31;
    months["june"] = 5;
}

De esta manera, puedes declarar la tabla hash en el archivo .h utilizando la palabra clave `extern`, lo que indica que la variable se definirá en otro archivo. Luego, en el archivo .c o .cpp, puedes inicializar la tabla hash y realizar las asignaciones necesarias.

Espero que esta solución te sea útil, Forzabiaggi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar