Cześć. Mam prosty kod (wszystko w jednym pliku). Dwie klasy, jedna dziedziczy po drugiej. Pierwsza ma być abstrakcją, druga konkretna. Pozostałe metody wyciąłem dla przejrzystości. Plik wygląda tak:
#include<fstream>
int main() {
return 0;
}
namespace myspace {
using std::ifstream;
class A {
protected:
A(const ifstream& in) : _in(in) {};
private:
ifstream _in;
};
class B : public A {
public:
B(const ifstream& in) : A(in) {};
};
}
A błąd (w czasie kompilacji) jest taki:
test.cpp:12:33: error: use of deleted function ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const std::basic_ifstream<_CharT, _Traits>&) [with _CharT = char; _Traits = std::char_traits<char>]’
A(const ifstream& in) : _in(in) {};
^
In file included from test.cpp:1:0:
/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include/c++/fstream:519:7: note: declared here
basic_ifstream(const basic_ifstream&) = delete;
^
Kompiluję za pomocą kompilatora GCC 5.4.0 z opcją -std=c++11. Nie rozumiem tego błędu, jak się go pozbyć? Wszystko robię tak jak w tutorialach (wywoływanie konstruktorów z klas bazowych i używanie listy inicjalizacyjnej konstruktora).