Im getting these errors because i cant convert correctly const char* to std::string....
In file included from ./../Header Files/MainGame.h:5:0, from ./MainGame.cpp:2, from main.cpp:1: ./../Header Files/../Source Files/Hangman.cpp: In member function ‘void Hangman::checkIfItEquals(std::string)’: ./../Header Files/../Source Files/Hangman.cpp:55:41: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive] std::string charStr = string(it) ^ In file included from /usr/include/c++/4.8/string:52:0, from /usr/include/c++/4.8/bits/locale_classes.h:40, from /usr/include/c++/4.8/bits/ios_base.h:41, from /usr/include/c++/4.8/ios:42, from /usr/include/c++/4.8/ostream:38, from /usr/include/c++/4.8/iostream:39, from ./../Header Files/MainGame.h:2, from ./MainGame.cpp:2, from main.cpp:1: /usr/include/c++/4.8/bits/basic_string.h:490:7: error: initializing argument 1 of ‘std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT, const _Alloc&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ [-fpermissive] basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); ^ In file included from ./../Header Files/MainGame.h:5:0, from ./MainGame.cpp:2, from main.cpp:1: ./../Header Files/../Source Files/Hangman.cpp:56:9: error: expected ‘,’ or ‘;’ before ‘if’ if(guessLet.compare(charStr) == 0) ^
And here is the code.... Im going to give it all if other code has any relation to the problem..
Hangman.cpp:
#include<vector>
#include "../Header Files/Hangman.h"
Hangman::Hangman()
{
}
void Hangman::run()
{
this -> mainGame();
this -> mainGameLoop();
}
void Hangman::mainGame()
{
dictonary.init();
randomString = dictonary.randomItem();
cout << "RANDOM STRING : " << randomString << endl;
stringToVec();
}
void Hangman::stringToVec()
{
for(std::string::iterator it = randomString.begin(); it != randomString.end(); ++it)
{
randStringVec.push_back(*it);
}
}
void Hangman::mainGameLoop()
{
try{
cout << " \n Guess A Letter (MUST BE A LETTER OR EXIT) \n";
std::cin >> userGuessLetter;
if(userGuessLetter.length() > 1)
throw "Too Big Of a letter";
}
catch(const char* exc)
{
if(true)
{
exit(1);
}
}
cout << "You typed " << userGuessLetter << endl;
}
void Hangman::checkIfItEquals(string guessLet)
{
for(std::vector<char>::iterator it = randStringVec.begin(); it!=randStringVec.end(); it++)
{
std::string charStr = string(*it)
if(guessLet.compare(charStr) == 0)
{
cout << "GOOD JOB.. THERE IS A SIMMILAR LETTER!" << endl;
break;
}
}
}
Hangman::~Hangman()
{
}
Hangman.h:
#pragma once
#include<iostream>
#include<string>
#include<vector>
#include "../Source Files/Drawer.cpp"
#include "../Source Files/Dictonary.cpp"
using std::cout;
using std::endl;
using std::string;
class Hangman
{
public:
Hangman();
~Hangman();
void run();
private:
Drawer hgmnDraw;
Dictonary dictonary;
std::vector<char> randStringVec;
string randomString;
string userGuessLetter;
void mainGame();
void drawHangMan(int attempts, int mode);
void checkIfItEquals(string guessLet);
void stringToVec();
void mainGameLoop();
int attemptsMadeBad = 0, attemptsMadeGood = 0;
bool correctGs;
};
EDIT
After BenjaminLindley Comment below on the question i made the edit.. and elivated one error but 2 of the same errors still presist:
In file included from ./../Header Files/MainGame.h:5:0, from ./MainGame.cpp:2, from main.cpp:1: ./../Header Files/../Source Files/Hangman.cpp: In member function ‘void Hangman::checkIfItEquals(std::string)’: ./../Header Files/../Source Files/Hangman.cpp:55:41: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive] std::string charStr = string(it); ^ In file included from /usr/include/c++/4.8/string:52:0, from /usr/include/c++/4.8/bits/locale_classes.h:40, from /usr/include/c++/4.8/bits/ios_base.h:41, from /usr/include/c++/4.8/ios:42, from /usr/include/c++/4.8/ostream:38, from /usr/include/c++/4.8/iostream:39, from ./../Header Files/MainGame.h:2, from ./MainGame.cpp:2, from main.cpp:1: /usr/include/c++/4.8/bits/basic_string.h:490:7: error: initializing argument 1 of ‘std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT, const _Alloc&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ [-fpermissive] basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
ANOTHER EDIT
Basically im not converting char const* correctly to string:
for(std::vector<char>::iterator it = randStringVec.begin(); it!=randStringVec.end(); it++)
{
std::string charStr = string(*it);
if(guessLet.compare(charStr) == 0)
{
cout << "GOOD JOB.. THERE IS A SIMMILAR LETTER!" << endl;
break;
}
}
As you can see on second line i am typecasting but that is not working according to this error:
In file included from ./../Header Files/MainGame.h:5:0,
from ./MainGame.cpp:2,
from main.cpp:1:
./../Header Files/../Source Files/Hangman.cpp: In member function ‘void Hangman::checkIfItEquals(std::string)’:
./../Header Files/../Source Files/Hangman.cpp:55:41: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
std::string charStr = string(*it);
^
In file included from /usr/include/c++/4.8/string:52:0,
from /usr/include/c++/4.8/bits/locale_classes.h:40,
from /usr/include/c++/4.8/bits/ios_base.h:41,
from /usr/include/c++/4.8/ios:42,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from ./../Header Files/MainGame.h:2,
from ./MainGame.cpp:2,
from main.cpp:1:
/usr/include/c++/4.8/bits/basic_string.h:490:7: error: initializing argument 1 of ‘std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ [-fpermissive]
basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());