Gå til innhold

warning: deprecated conversion from string constant to ‘char*’ C++


Anbefalte innlegg

char usrnr[128] = {' '};

cin >> usrnr;

		usrnr_test += usrnr;

		if (usrnr_test=="usr1")
			{
				char *pfu = "usr1"; //Linje 105
				char *ping_path = pfu;
			}

usr_info_post.open(ping_path,ios::out|ios::app|ios::ate|ios::binary);

						usr_info_post << usrnr << " - " << nickname;

					usr_info_post.close();

 

Har lett en del på nette men ikke funnet noen løsning :(

 

Dette er bare deler av koden.

 

Feil melling:

 105: warning: deprecated conversion from string constant to ‘char*’

105

Lenke til kommentar
Videoannonse
Annonse
char usrnr[128] = {' '};
cin >> usrnr;
usrnr_test += usrnr;
if (usrnr_test=="usr1") {
char *pfu = "usr1"; //Linje 105
char *ping_path = pfu;
}

usr_info_post.open(ping_path,ios::out|ios::app|ios::ate|ios::binary);
usr_info_post << usrnr << " - " << nickname;
usr_info_post.close();

 

Ved siden av det OldMan har foreslått, hvorfor i alle dager bruker du char-pekere til I/O i C++? Lese ting rett inn i char* vha cin er å be om buffer overflow feil. Har du en mulighet, bruke std::string eller en klasse med lignende funksjonalitet, slik at du slipper å bry deg om den type ting. Må du snakke med noe legacy/C-kode, konverter fra std::string til const char* akkurat ved de kallene. Livet blir litt enklere da.

Lenke til kommentar
  • 4 uker senere...
if (usrnr_test=="usr1")
{
char *pfu = "usr1"; //Linje 105
char *ping_path = pfu;
}

 

Du er klar over at ping_path *ikke* eksisterer *etter* denne blokka?

 

 

Det er vel strengt tatt en compilerinnstilling hvorvidt scope'en skal gå utover deklarerte variabler i for- og whileløkker, samt if-constructs. Det var ihvertfall slik sist jeg sjekket, skal riktignok ikke skryte på meg å si hvorvidt de har satt det til en standard i c++0x. :)

Lenke til kommentar
if (usrnr_test=="usr1")
{
char *pfu = "usr1"; //Linje 105
char *ping_path = pfu;
}

 

Du er klar over at ping_path *ikke* eksisterer *etter* denne blokka?

 

 

Det er vel strengt tatt en compilerinnstilling (...)

 

Nei, det er det ikke. Dvs. det kan godt være en kompilatorinnstilling, men ihht standarden eksisterer variabelen i den blokken den er definert i (og opphører å eksisterere når kontrollen forlater blokken). Slik har det vært siden 1998 (om ikke lengre enn det).

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...