Toon posts:

[C++] STL compiler error*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg de volgende error als ik de onderstaande code compileer.
main.cpp: In function `std::string var_set(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >)':
main.cpp:124: `struct std::basic_string<char, std::char_traits<char>,
std::allocator<char> >' used where a `int' was expected
Hoe los ik dit op ?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Var
map<string,int> var_int;
map<string,string> var_char;

// Functies
string var_make(string x);
string var_set(string x);

// Functie
string var_set(string x)
{
    // Variabelen opslaan
    if(x.substr(0, 3) == "int")
        var_int[x.substr(4, 3)] = int(x.substr(8, 7));          
  else
    var_char[x.substr(4, 3)] = x.substr(8, 7);
    
   // Niks terugsturen
  return 0;     
}


(PS : Sry moest ik onvolledig zijn geweest dit is eerste keer dat ik zo een vraag stel)

Verwijderd

Topicstarter
sry mod : titel onvolledig :(

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:03
En welke regel is regel 124?

Verwijderd

Gaat het over deze regel:

C++:
1
var_int[x.substr(4, 3)] = int(x.substr(8, 7));


?

De functie int(string) wat is daar de terugkeerwaarde van?

  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 111% gewijzigd door Eelis op 18-02-2015 19:52 ]


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Verwijderd schreef op 15 februari 2004 @ 13:19:
Ik krijg de volgende error als ik de onderstaande code compileer.
code:
1
2
3
4
main.cpp: In function `std::string var_set(std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >)':
main.cpp:124: `struct std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >' used where a `int' was expected
STL errors zijn vaak wat lastig te lezen, maar als je goed kijkt kun je ze wel ontcijferen. Wat hier in verkorte vorm staat is:
code:
1
2
In function 'string var_set(string)':
'string' used where an 'int' was expected

Oftewel je gebruikt ergens een string waar de compiler dacht dat je een integer ging gebruiken.

De fout zit in de int(...):
code:
1
var_int[x.substr(4, 3)] = int(x.substr(8, 7));

int(T) is een function style cast die iets van type T converteert naar type int. Het staat gelijk aan (int)T. In dit geval is T van het type string, en wil je dus een string naar een int converteren. Zo'n conversie bestaat echter niet standaard op deze manier.

Eelis heeft (terwijl ik dit typte) al een manier gegeven om het werkend te krijgen.
(PS : Sry moest ik onvolledig zijn geweest dit is eerste keer dat ik zo een vraag stel)
Het is wel makkelijk als je de regel waar de fout op slaat even aangeeft, 124 zegt ons natuurlijk niks met alleen de geposte code.

www.madwizard.org


Verwijderd

Topicstarter
Ik dank u o heilige Eelis :) , (en natuurlijk de rest dat geholpen heeft) _/-\o_

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 15 februari 2004 @ 21:04:
Ik dank u o heilige Eelis :) , (en natuurlijk de rest dat geholpen heeft) _/-\o_
Eelis lost het op maar Madwizard legt het uit. Om herhaling te voorkomen is het meestal handig om ook de uitleg goed op te nemen ;)

Professionele website nodig?

Pagina: 1