Mirad, tengo una clase que "deberia" escribir en un fichero de texto algo asi:
Creando screen --------------------- done
ó
Creando screen --------------------- failed
segun si falla o no la creacion de screen (screen como cualquier otra cosa donde yo ponga el if. Mis codigos son:
Log.cpp:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
static void PutInfo(char Name[], bool Done, char File[])
{
if(Done == true)
{
char Done[] = "done";
}
else
{
char Done[] = "failed";
}
std::ofstream fs(File);
fs << Name << "---------------->" << Done;
}
y
Log.h:
class Log
{
public:
static void PutInfo(char Name[], bool Done, char File[]);
};
Y en main pondria algo asi:
SDL_Surface* screen;
Log::PutInfo("Creando screen", true, "log.txt");
Soy consciente de que es una chorrada pero no se que le pasa. Al compilar no da errores pero al linkar da unresolved simbol. Debe ser una estupidez pero se poco, si alguien puede echarme un cable le estaría muy agradecido... thx
Un saludo
Hola, espero no andar un poco despistado como la última vez que ayudé a resolver una duda de C XD.
Creo que el problema es que en la implementación de la función Log::PutInfo (en el log.cpp) te has olvidado poner el (Log::). El código resultante quedaria como:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
static void Log::PutInfo(char Name[], bool Done, char File[])
{
...
if(Done == true)
No te da un error de ejecución pq ael compilador asume que la función Log::PutInfo (que no es lo mismo que PutInfo) se implementará en algún otro módulo, y al no encontrarla en ninguno, da ese error de linkado.
Saludos.
(nooo) (nooo) (nooo)
Soy memo, bueno Drakkar, esta vez has dao en el clavo, muchas gracias!!! (ole) (ole)
Mmm, por cierto igual no has puesto el codigo exacto que usas, pero la variable que declaras dentro del if no estara accesible fuera de el, y si no peta es porque tienes un bool q se llama tambien Done.
Supongo que tu querias poner esto, aparte del fallo que te ha corregido DraKKaR:
static void PutInfo(char Name[], bool Done, char File[])
{
char *done;
if(Done)
{
done = "done";
}
else
{
done = "failed";
}
std::ofstream fs(File);
fs << Name << "---------------->" << done;
}
Espero que te sirva de algo.
Si, eso me di cuenta despues y lo solucione muchas gracias de todas formas. Parece que ahora escribe en el archivo pero si ejecuto mi clase mas de una vez se sobreescribe y la idea es que pusiera las cosas una detras de otra, :(
A ver si consigo hacerlo
Un saludo y thx
tendras que añadirle el flag
ios_base::app
en el constructor, para
que inserte al final del fichero,
un saludo
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include "Log.h"
using namespace std;
void Log::PutInfo(char Name[], bool Done, char File[])
{
char *done;
if(Done)
{
done = "done";
}
else
{
done = "failed";
}
std::ofstream fs(File, ios_base::app);
fs << Name << "---------------->" << done;
}
Solucionao!
Un saludo y gracias!
Array de char en el siglo XXI?, a la hoguera! (twist)
Estoy abierto a todas tus sugerencias para solucionar esos valores, ;)
Gracias!
Estoy con Grugnorr... todos a usar std::string como posesos!
Os paso la página que me abrió los ojos en muchos aspectos:
http://www.gamedev.net/reference/articles/...article2009.asp[Edit: corregida lo de la dirección XD]
Socorro, has puesto dos veces http:// y he acabao en la web de microsoft, (nooo) (nooo) (nooo) (nooo)
Gracias por la page jeje, ahora mismo la miro
Un saludo