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)
| | |-+  Error de compilación en bloque de bits
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error de compilación en bloque de bits  (Leído 2,232 veces)
loryisus

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Error de compilación en bloque de bits
« en: 8 Marzo 2014, 17:48 pm »

Buenas, resulta que una vez he acabado este código sobre bloques de bits, me encuentro con el siguiente error de compilación (o parecido) en todas las lineas en las que se menciona "get_block_t":
Código:
 
error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
El código entero de errores sería este de a continuación:
Código:
bit_set_2.cpp: En la función miembro ‘void bit_set::set_union(const bit_set&)’:
bit_set_2.cpp:35:37: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp: En la función miembro ‘void bit_set::set_union(const bit_set&, bit_set&)’:
bit_set_2.cpp:39:45: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp: En la función miembro ‘void bit_set::set_intersection(const bit_set&)’:
bit_set_2.cpp:43:37: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp: En la función miembro ‘void bit_set::set_intersection(const bit_set&, bit_set&)’:
bit_set_2.cpp:47:45: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp: En la función miembro ‘void bit_set::set_diff(const bit_set&)’:
bit_set_2.cpp:57:39: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp: En la función miembro ‘void bit_set::set_diff(const bit_set&, bit_set&)’:
bit_set_2.cpp:61:47: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp: En la función miembro ‘bool bit_set::contains(const bit_set&)’:
bit_set_2.cpp:75:22: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp:75:51: error: pasar ‘const bit_set’ como el argumento ‘this’ de ‘block_t bit_set::get_block_t()’ descarta a los calificadores [-fpermissive]
bit_set_2.cpp:77:2: error: expected ‘}’ before ‘else’
Aquí están las funciones detalladas:
Código:
bit_set::bit_set(void):
block_size_(32), /*int = 32 bits*/
block_(0)
{
}

bit_set:: ~bit_set(void){
}

block_t bit_set::get_block_t() {
return block_;

}

void bit_set::set_block_t(block_t b){
block_ = b;
}


void bit_set::set_union(item_t i){
    block_t nuevo = ONE_MASK;
nuevo = nuevo << i;
block_ = block_ | nuevo;
    }
   
void bit_set::set_union(const bit_set& bs){
   block_ = block_ | bs.get_block_t();
}

void bit_set::set_union(const bit_set& i_bs, bit_set& o_bs){
o_bs.set_block_t(block_ | i_bs.get_block_t());
}

void bit_set::set_intersection(const bit_set& bs){
   block_ = block_ & bs.get_block_t();
}

void bit_set::set_intersection(const bit_set& i_bs, bit_set& o_bs){
o_bs.set_block_t(block_ & i_bs.get_block_t());
}

void bit_set::set_diff(item_t i){
    block_t nuevo = ONE_MASK;
nuevo = nuevo << i;
block_ = block_ & (~nuevo);
}
 
void bit_set::set_diff(const bit_set& bs){
   block_ = block_ & (~bs.get_block_t());
}

void bit_set::set_diff(const bit_set& i_bs, bit_set& o_bs){
o_bs.set_block_t(block_ & (~i_bs.get_block_t()));
}

bool bit_set::belongs(item_t i){
   block_t nuevo = ONE_MASK;
   nuevo = nuevo << i; /*desplazamiento a la izquierda*/
   if ((nuevo & block_)==EMPTY_SET_MASK){ /*comparación con el bloque creado*/
   return false;   
   }else{
  return true;   
   }
}
 
bool bit_set::contains(const bit_set& a){
    if(a.get_block_t() == (block_ & a.get_block_t())){
return true;
else{
return false;
}
}

void bit_set::write(ostream& os){
char aux[80];

itoa(aux); /*Transforma el bloque en la cadena aux*/
os << aux << std::endl;
}

Y aquí el fichero donde declaré todas las variables de la clase:
Código:
#include <iostream>

using namespace std;

typedef unsigned long block_t;
typedef unsigned char item_t;
typedef unsigned char block_size_t;

#define EMPTY_SET_MASK 0x00    // Máscara hexadecimal que representa el 0
#define ONE_MASK       0x01    // Máscara hexadecimal que representa el bit más significativo a 1



    class bit_set {

//========================================================================================
// Atributos privados.
//========================================================================================
private:
block_t block_;
block_size_t block_size_;

Si tienen alguna idea de que podría ser el problema y como podría solucionarlo díganmelo.

Gracias por adelantado


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Error de compilación en bloque de bits
« Respuesta #1 en: 8 Marzo 2014, 23:05 pm »

Código
  1. block_t bit_set::get_block_t() {
  2. return block_;
  3.  
  4. }
  5.  
  6. void bit_set::set_union(const bit_set& bs){
  7.   block_ = block_ | bs.get_block_t();
  8. }

Si get_block_t no es const no puede ser llamada desde una instancia declarada como const.

En set_union se está haciendo bs.get_block_t y bs está definida como const.

o le añades const a get_block_t o le quitas el const al parámetro bs.


En línea

loryisus

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Error de compilación en bloque de bits
« Respuesta #2 en: 8 Marzo 2014, 23:52 pm »

Código
  1. block_t bit_set::get_block_t() {
  2. return block_;
  3.  
  4. }
  5.  
  6. void bit_set::set_union(const bit_set& bs){
  7.   block_ = block_ | bs.get_block_t();
  8. }

Si get_block_t no es const no puede ser llamada desde una instancia declarada como const.

En set_union se está haciendo bs.get_block_t y bs está definida como const.

o le añades const a get_block_t o le quitas el const al parámetro bs.


¿Y como se le añadiría el const?  :o . Es que es imprescindible que se mantenga en las funciones y no tengo ni idea de como podría hacerlo.
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Error de compilación en bloque de bits
« Respuesta #3 en: 9 Marzo 2014, 01:41 am »

Deberías comprarte un manual de C++... si ya lo tienes, deberías leerlo.

Código
  1. block_t bit_set::get_block_t( ) const {

y lo mismo en la declaración.
En línea

loryisus

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Error de compilación en bloque de bits
« Respuesta #4 en: 10 Marzo 2014, 16:31 pm »

Deberías comprarte un manual de C++... si ya lo tienes, deberías leerlo.

Código
  1. block_t bit_set::get_block_t( ) const {

y lo mismo en la declaración.


Okis ya va bien gracias por tu tiempo... e intentaré pillarme un manual de C++ para la próxima vez  :-(
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error De Compilacion :'( « 1 2 »
Programación Visual Basic
Petro_Boca 13 5,938 Último mensaje 2 Agosto 2010, 21:45 pm
por BlackZeroX
Error de compilacion
Programación Visual Basic
Mr.Blue 4 4,931 Último mensaje 22 Agosto 2010, 01:17 am
por Mr.Blue
error de compilacion
Programación C/C++
mapers 2 2,764 Último mensaje 8 Septiembre 2010, 13:27 pm
por JuszR
John the ripper Error de compilacion -- make: *** [generic.h] Error 1 --
GNU/Linux
hbenzin 2 3,931 Último mensaje 20 Agosto 2011, 23:42 pm
por hbenzin
error de compilacion
Programación C/C++
Chazy Chaz 1 2,669 Último mensaje 17 Octubre 2011, 14:28 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines