Я хочу использовать класс с участниками потока.C++ Как инициализировать std :: istream * хотя конструктор защищен
Мой код выглядит следующим образом:
//! pushes a Source and InputFilters into a filtering_istream
class FilterChain {
public:
//! create an empty FilterChain
FilterChain(){
init();
}
private:
//! the stream to connect Source and InputFilters together
io::filtering_istream* m_filteringStream;
//! stream to use by other classes
std::istream* m_stream;
void init(){
std::streambuf* streamBuffer = m_filteringStream->rdbuf();
m_stream->rdbuf(streamBuffer);
}
};
Я получаю сообщение об ошибке, которое защищено конструктор станд :: basic_istream:
/usr/include/c++/4.8.1/istream: In member function `void FilterChain::init()': /usr/include/c++/4.8.1/istream:606:7: Error: `std::basic_istream<_CharT, _Traits>::basic_istream() [with _CharT = char; _Traits = std::char_traits]' is protected
я попытался ссылки потока, а, но, вызвавшей же ошибка. Любые идеи, как это исправить?
EDIT 1:
Thx к sehe Я установил его с новым Init() вроде этого:
void init(){
std::streambuf* streamBuffer = m_filteringStream->rdbuf();
m_stream = new std::istream(streamBuffer);
}
Pro советы: (а) включать код, который вызывает проблему. (b) переключиться на локаль en_US перед публикацией ошибок компилятора – sehe
Надеюсь, вы выделите эти указатели где-нибудь. –
@JoachimPileborg Компилятор выделяет для вас указатель ... Теперь задача программиста состоит в том, чтобы правильно их инициализировать:/ – sehe