Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - digimikeh

#131
Ok, pero el primer caso me daba error, no podía si quiera mostrar la dirección de memoria..
#132
Ya entiendo!, el ejemplo que puse aquí funciona, pensé que el problema estaba en la forma en que llamaba al archivo binario lectura y escritura, y en realidad el problema estaba en que dentro de UnaClase, tengo una variable tipo char * nombre, que me estaba dando el problema, es decir, para lectura y escritura binaria me tengo que olvidar de usar punteros.... es asi? .,..  simplemente reemplace :

Código (cpp) [Seleccionar]

char * nombre;


por

Código (cpp) [Seleccionar]

char nombre[16];


y funciono...
curioso.. pero por que sucede esto?, acaso el compilador se confunde cuando copio memoria de un puntero?

En otras palabras, si deseo copiar información en forma binaria a un archivo y leerlo también en forma binaria, la fuente no puede ser memoria dinámica.

Gracias a ambos por las respuestas
#133
Buenas.

Estoy intentando guardar y leer de/a un archivo en forma binaria, no tengo problemas guardando, el problema va leyendo el archivo:


Código (cpp) [Seleccionar]


Ifstream fromFile;
fromFile.open("Archivo.bin", iOS::binary);

if (fromFile.good()){

     UnaClase uc;
   
     fromFile.read((char*)&uc, sizeof(UnaClase));

     //La siguiente linea me da el error:
     std::cout << uc.LeerNumero() << std::endl;


}


Pareciera que no se está escribiendo la información en la memoria que le corresponde a la variable "uc".

Que podrá ser=?

gracias.
#134
Programación C/C++ / Re: c++ bajo nivel
4 Marzo 2019, 19:08 PM
Buen apunte, gracias,...
#135
Baia baia.. lo revisare... gracias.


#136
Hola nuevamente por aquí..

Código (cpp) [Seleccionar]


#include <fstream>

void Extraer(){

    int x = 0;
    int y = 0;

    ifstream fromFile;
    fromFile.open("file.txt");
    if (fromFile.is_open()){

         while (fromFile >> x >> y){      // *

          }


    }
 
}


Mi duda especificamente va en la linea donde se lee:

Código (cpp) [Seleccionar]

while (fromFile >> x >> y){
}


Como se lee esa sintaxis?, entiendo que dentro del parámetro de un while va una expresión por lo general del tipo bool... pero la expresión de extraccion que se ve ahi no me hace sentido como argumento... 

Saludos y gracias de antemano.
#137
Me queda claro, gracias a ambos.. :rolleyes:
#138
Ok, pero ahí estas declarando una funcion fuera de la clase, yo decía lo de friend porque se declara dentro de la clase, aunque no sea miembro.
#139
Pero por lo visto esto solo sucede con las funciones amigas verdad?
#140
Hola!

Me parece extraño que tenga que definir una función friend anteponiendo el espacio de nombre si se supone que lo dejé estipulado al principio:

Código (cpp) [Seleccionar]

//Persona.h

namespace Agenda{
  class Persona{
     
     int edad;
     friend int f_obtenerEdad();

  };
}


Código (cpp) [Seleccionar]

//Persona.cpp
#include "Persona.h"
using namespace Agenda;

int f_obtenerEdad(Persona & _p){
  return _p.edad;          //Error, edad es privado
}



En cambio, si lo hago asi:
Código (cpp) [Seleccionar]

//Persona.cpp
#include "Persona.h"
using namespace Agenda;

int Agenda::f_obtenerEdad(Persona & _p){
  return _p.edad;         //Esto lo asimila correctamente
}



Tenía entendido que si yo escribía "using namespace X", no era necesario llamar a los miembros de un objeto usando X:: , pero en este caso del friend no se cumple, por qué será?

Gracias..