Duplicar posibles:
Deprecated conversion from string constant to char * errorC++ - la conversión en desuso a partir constante a 'char *' cadena
Traté de correr antiguo código C++ hoy (este código ha ido bien en 2004 :) . Pero ahora tengo este mensaje de error:
make[1]: Entering directory `/home/thehost/Plocha/lpic-1.3.1/lpic/src'
source='error.C' object='error.o' libtool=no \
depfile='.deps/error.Po' tmpdepfile='.deps/error.TPo' \
depmode=gcc3 /bin/bash ../../config/depcomp \
g++ -DHAVE_CONFIG_H -I. -I. -I../.. -g -O2 -Wno-deprecated -g -O2 -c -o error.o `test -f 'error.C' || echo './'`error.C
error.C: In constructor ‘error_handler::error_handler(const char*, char*)’:
error.C:49:7: error: ‘cerr’ was not declared in this scope
error.C:58:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite- strings]
error.C:58:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite- strings]
error.C:58:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite- strings]
error.C:58:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite- strings]
make[1]: *** [error.o] Error 1
make[1]: Leaving directory `/home/thehost/Plocha/lpic-1.3.1/lpic/src'
make: *** [all-recursive] Error 1
Fuente de archivo "error.C":
...
#include <error.h>
int error_handler::error_number = 0;
int error_handler::message_number = 0;
int error_handler::debug_number = 0;
int error_handler::Q_debug = 1;
int error_handler::object_number = 0;
int error_handler::tab = 33;
error_handler::error_handler(const char *name, char *error_file_name)
{
errname = new char [filename_size];
strcpy(errname,error_file_name);
errfile.open(errname,ios::app);
if (!errfile)
{
cerr << "error_handler: cannot open error file " << errname << endl;
exit(1);
}
errfile.close();
my_name = name;
object_number++;
debug("");
}
void error_handler::error(char* s1, char* s2, char *s3, char *s4)
{
error_number++ ;
errfile.open(errname,ios::app);
errfile.setf(ios::left);
errfile << "FAILURE: " << setw(tab) << my_name << " " << s1 << ' ' << s2
<< s3 << s4 << endl;
errfile.close();
exit(1);
}
...
y la fuente de archivo "error.h":
...
using namespace std;
class error_handler {
static int error_number;
static int message_number;
static int Q_debug;
static int debug_number;
static int object_number;
const char *my_name;
char *errname;
ofstream errfile;
static int tab;
public:
error_handler(const char *, char *error_file_name);
void error(char* s1, char* s2="",
char* s3="", char* s4="");
void error(char* s1, double d2,
char* s3="", char* s4="");
void message(char* m1,
char* m2="", char* m3="", char* m4="");
void message(char* m1, double m2,
char* m3="", char* m4="");
void message(char* m1, double m2, char* m3, double m4);
void message(char* m1, double m2, char* m3, double m4,
char* m5, double m6, char* m7, double m8);
void message(char* m1, double m2, double m3, double m4, double m5);
void message(char* m1, double m2, double m3, double m4);
void message(char* m1, double m2, char* m3, double m4, char* m5, double m6);
void message(char *s1, double d2, double d3);
void message(char *s1, char *s2, double d3);
void debug(char* m1,
char* m2="", char* m3="", char* m4="");
void debug(char* m1, double m2,
char* m3="", char* m4="");
void debug(char* m1 , double m2, char* m3, double m4);
void debug(char* m1 , double m2, char* m3, double m4, char* m5, double m6);
};
#endif
usted tiene Alguna idea de cómo podría solucionarlo? En caso afirmativo, escríbalo con claridad (soy novato ...). ¡Gracias!
No de nuevo ... Por favor, utilice la búsqueda antes de pedir !! Sugerencia: 'char * s2 =" "' es lo que está mal – Xeo