Форум программистов, компьютерный форум CyberForum.ru

потоки вывода - C++

Восстановить пароль Регистрация
 
Pokemon_93
 Аватар для Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
22.11.2013, 12:37     потоки вывода #1
доброго времени суток, Уважаемые форумчане!
есть проблема, суть проблемы заключается в следующем:
ни как не могу передать поток в конструктор класса(конструктор должен принимать ostream, что бы можно было передавать в него разные типы потоков.),

помогите разобраться что я не правильно делаю?
в хедере класса объявил поток std::ostream & strm и так же прописал непосредственно конструктор класса, который будет принимать ostream.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class CGeometryObjectToJSONSerializerVisitor : public IGeometryObjectSerializerVisitor
{
public:
     CGeometryObjectToJSONSerializerVisitor(std::ostream & stream);
    ~CGeometryObjectToJSONSerializerVisitor();
    void SaveObjectsToFile(IGeometryObject* object[maxNumObjects], int objectsNum);
private:
    void Visit( CPoint3D const & pt); 
    void Visit( CPoint2D const & pt);
    ///////////////////////////////////////
    void WritePointInfo1( std::string ptType, CPoint3DShPtr pt);
    std::ostream & strm; 
};
в .срр пишу следующее

C++
1
2
3
4
CGeometryObjectToJSONSerializerVisitor::CGeometryObjectToJSONSerializerVisitor(std::ostream& stream)
{
    strm = stream;
}
но получаю такие подсказки от компилятора
{ - CGeometryObjectToJSONSerializerVisitor::CGeometryObjectToJSONSerializerVisitor(std::ostream& stream) не предоставляет инициализатор для: ссылка член CGeometryObjectToJSONSerializerVisitor::strm

и

= тоже подчеркнуто.

заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 12:37     потоки вывода
Посмотрите здесь:

C++ Вопрос про потоки вывода
C++ потоки ввода/вывода.
Потоки вывода C++
Потоки ввода-вывода в С++ C++
C++ Используя потоки ввода/вывода в С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
22.11.2013, 12:42     потоки вывода #2
Pokemon_93, инициализацию полей надо делать в списке инициализации конструктора:
C++
1
CGeometryObjectToJSONSerializerVisitor::CGeometryObjectToJSONSerializerVisitor(std::ostream& stream) : strm(stream) {}
Pokemon_93
 Аватар для Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
22.11.2013, 12:48  [ТС]     потоки вывода #3
gray_fox, спасибо, до этого пробовал так на паре сделать не получилось почему то=(
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
22.11.2013, 12:53     потоки вывода #4

Не по теме:

К слову, можно и так написать:

C++
1
CGeometryObjectToJSONSerializerVisitor::CGeometryObjectToJSONSerializerVisitor(std::ostream& strm) : strm(strm) {}



Добавлено через 2 минуты
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
gray_fox, спасибо, до этого пробовал так на паре сделать не получилось почему то=(
В любом случае ссылку в теле конструктора инициализировать нельзя - после входа в это тело все поля объекта уже инициализированны.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.11.2013, 17:13     потоки вывода #5
Цитата Сообщение от gray_fox Посмотреть сообщение
после входа в это тело все поля объекта уже инициализированны.
Как так?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
22.11.2013, 17:33     потоки вывода #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Как так?
Я не понял, что не так?
alsav22
22.11.2013, 17:41
  #7

Не по теме:

Фразу не понял. О чём речь?

gray_fox
22.11.2013, 17:52
  #8

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
О чём речь?
О том, что
C++
1
2
3
4
5
    
 
CGeometryObjectToJSONSerializerVisitor::CGeometryObjectToJSONSerializerVisitor(std::ostream& strm) {
   // здесь все поля объекта уже инициализированны 
}
да, не поэт)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 18:11     потоки вывода
Еще ссылки по теме:

C++ Текстовые файлы и потоки ввода/вывода
Потоки ввода-вывода C++
C++ Непонятная ошибка. Потоки ввода/вывода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
22.11.2013, 18:11     потоки вывода
  #9

Не по теме:

Я бы написал, что ссылку необходимо инициализировать в момент создания, а создаются поля объекта до входа в тело конструктора. Поэтому, такие поля как ссылки, можно инициализировать только через список инициализаторов (до входа в тело конструктора).

Yandex
Объявления
22.11.2013, 18:11     потоки вывода
Ответ Создать тему
Опции темы

Текущее время: 01:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru