I have defined a enum class:

Code:
enum class Genre
{
	fiction, nonfiction, periodical, biography, children
};
And another class:

Code:
class Book
{
public:
	string f_title() { return title; }
	string f_author() { return author; }
	string f_isbn() { return isbn; }
	Genre f_genre() { return g; }
	int f_day();
	int f_month();
	int f_year();
	Book(string tit, string aut, string isbn, Genre g);
	Book(string tit, string aut, string isbn);
	Book();
	class Invalid {};
private:
	string isbn, title, author;
	int day, month, year;
	Genre g;
};
I am stuck because I am not able to directly input values because I am not able to correctly set helper function. I had to create two different ones:

Code:
istream& operator>>(istream& is, Book& n)
{
	string title, author, isbn;

	getline(is,title);
	getline(is,author);
	getline(is,isbn);
	isbn.resize(7);

	if (!is) return is;

	n = Book{ title,author,isbn };

	return is;
}

istream& operator>>(istream& is, Genre& g)
{
	int i;
	is >> i;
	g = (Genre)i;

	return is;
}
but my program skips the Genre helper function and returns to me the default value "N/A".

How can I fix it?

Thanks!