Podobno usunięta funkcja

0

Siema.

Kod:

void load_map()
{
	int i = 0;
	string file_name = "mapa.txt";
	fstream file = open_file(file_name);

	do
	{
		map[i].load_file(file);
		i++;
	} while (file.eof() == false);
	close_file(file_name, file);
}

Błąd:
error C2280: 'std::basic_fstream<char,std::char_traits<char>>::basic_fstream(const std::basic_fstream<char,std::char_traits<char>> &)' : attempting to reference a deleted function

Co w tym kodzie jest nie tak że wywala ten błąd?

4

fstream file = open_file(file_name);
Bozia Cie pokarała za owijanie istniejącego i spełniającego wszystkie założenia kodu bez znajomości podstawowych zasad tego robienia.

Garść rozwiązań:

  1. rvalue reference + move semantic
  2. Niech open_file przyjmuje jako argument twój plik i na nim operuje
  3. Daruj sobie własne open_file

Słowo klucz treści błędu: deleted function
Do przeczytania dla Ciebie: http://en.cppreference.com/w/cpp/language/function#Deleted_functions

Uproszczenie twojego problemu:

struct fstream{
	fstream(const string &){}
	fstream(const fstream &) = delete;
};

fstream open_file(const string &file_name){
	return fstream(file_name);
}

void load_map(){
	string file_name = "mapa.txt";
    fstream file = open_file(file_name);
}

http://ideone.com/aVfbKV Tym razem błędy będą bardziej naprowadzające

1 użytkowników online, w tym zalogowanych: 0, gości: 1