• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema bool?

Bluburro7

Utente Normale
Autore del topic
11 Settembre 2015
61
11
Miglior risposta
0
ciao a tutti, oggi ho cominciato il mio primo progetto un po' più complicato con gli oggetti...
andava tutto liscio quando, dopo dichiarata una variabile "string" e creato un if-else così:
if (razza == "umano") //dove razza è una variabile string

mi da un errore strano:
in sonstanza: non convertire un string in un bool.
:look:



errore:
C:\Users\User\Desktop\SCRIPTING\c++\MY-001\class [2].cpp
In member function 'void Player::patt()':20 19 C:\Users\User\Desktop\SCRIPTING\c++\MY-001\class [2].cpp
[Error] could not convert '((Player*)this)->Player::razza.std::basic_string<_CharT, _Traits, _Alloc>::operator=<char, std::char_traits<char>, std::allocator<char> >(((const char*)"umano"))' from 'std::basic_string<char>' to 'bool'


strano..:emoji_confused:.qualcuno mi sa dire qualcosa?
ditemi poi se devo postare tutto il codice...
grazie a tutti
 
ok errore mio XD
ecco il
CODICE:

(.h):
#include <iostream>
#include <string>
using namespace std;


class Player
{
private:

public:
string razza,nome;
int att;
Player(); //costruttore
// void pname(); //attributi?
void patt(); //
void pdef(); //
void pspec(); //

};





(class [2].cpp)

#include <iostream>
#include <string>
using namespace std;
#include "lib001.h"


Player::Player() //costruttore
{

}


/*
void Player::pname()
{
da ricontrollare
}
*/


void Player::patt()
{
if(razza= "umano")
{
att= 5;
}
else
{
cout << "\nERRORE!\n";
}
}




void Player::pdef()
{

}




void Player::pspec()
{

}



(.cpp-main)

#include <iostream>
#include <string>


using namespace std;


#include "class [2].cpp"


/*
function
struct
ecc
*/
int att;
string nome,razza;
void NewPlayer ();




int main ()
{

//dichiaration
int scelta;

//start program
cout << "\tBenevenuto in Tattic Sword!\n";
do{ //inizio ciclo per scelta
cout << "\n(1 per il menu funzioni)\n";
cout << "Digita:";
cin >> scelta;


switch(scelta)
{


case(0):
cout<<"\nArresto...Eliminazione Dati...\n";
break;


case (1):
cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
<<"\t Menù: \t\n\n"; //fatto
cout<< "0: termina il programma\n"; // fatto
cout<< "1: Visualizza questa guida\n"; //in cors0
cout<< "2: crea nuovo giocatore\n"; //da fare
cout<< "3: shop\n"; // da fare
cout<< "4: upgrade\n"; // da fare

/* RICORDA: in shop,upgrade,e sfida
fai specificare nomi player!
*/

cout<< "6: Manuale\n"; // da fare
cout<< "7: Sfida\n"; // da fare
cout<< "8: Riassunto\n"; // da fare-->ci dirà tutte le info giocatore oggetti ecc...
break;

case(2):
cout<<"\nInserire il nome del giocatore:";
cin>> nome;
cout<<"\nScegliere Razza(Manuale per info):";
cin>> razza;
NewPlayer();
break;


default:
cout<< "\n Hai Sbagliato Qualcosa...\n";
}




}while(scelta != 0); //fine ciclo per scelta






//ending program
system("PAUSE");
return 0;
}




void NewPlayer ()
{
Player nome;
}
 
ok errore mio XD
ecco il
CODICE:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Qui non stai facendo un confronto, stai assegnando "umano" alla variable di tipo std::string razza, per poi DOPO eseguire la verifica.

Quindi alla fine la condizione risulterà

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!



Ti consiglio di racchiudere il tuo codice tra i tag [ code ], di indentare il tuo listato, di non usare chiamate system, di saper leggere gli errori del compilatore.
 
Ultima modifica:
HO RISOLTO
per cercare di riparare un altro errore avevo aggiunto:
#include <iostream>
nel file della classe. tolto quello è tornato apposto.
grazie comunque a tutti
(p.s. ho capito il problema quando il compilatore mi dava errore anche se rendevo commento il if (razza= umano))

--- Aggiornato ---

cosa intendi con "racchiudere il codice tra i tag"?

--- Aggiornato ---

ALT:mi da di nuovo l'errore,come faccio a fare in modo che non assegni umano a razza ma li confronti?
cosa significa identare il tuo listato?:emoji_confused:
con non usare chiamate system intendi il "system("PAUSE");" alla fine?

RICORDO:
sto studiando il C++ per hobby ed ho solo 13 anni non pretendete troppo :look::emoji_smiley:

consideratemi come il perggior neofita in giro....XD

--- Aggiornato ---

MA SCEMO sono CHE MI DIMENTICO CHE SI FA CON == IL CONFRONTO!!!:facepalm::facepalm::facepalm:
dopo questo posso darmi al bowling :nono:

comunque ascolto molto volentieri i tuoi consigli se hai tempo....

scusate per il casino e grazie
 
[/COLOR]cosa intendi con "racchiudere il codice tra i tag"?


Il codice lo devi racchiudere tra i tag così: (senza spazi)

[ code ]

CODICE
CODICE
CODICE

[ / code ]

cosa significa identare il tuo listato?:emoji_confused:

Perfavore, Entra oppure Registrati per vedere i Link!


con non usare chiamate system intendi il "system("PAUSE");" alla fine?

Si, le chiamate system sono da evitare in quanto 'disturbano' il sistema operativo e inseriscono il processo in uno stato di Wait.
Evita. Ci sono alternative migliori come la funzione getch() definita in conio.h

sto studiando il C++ per hobby ed ho solo 13 anni non pretendete troppo

Nessuno pretende niente.

dopo questo posso darmi al bowling :nono:

Non pensare che dedicarti al bowling ti farà avere successo. Esso, come ogni cosa, richiede skill, la quale si ottiene con la passione, l'impegno e la determinazione.
 
si certo,hai ragione :soso:
sia su gli insegnamenti di vita che si i consigli, grazie XD