ostream&
От: Glоbus Украина  
Дата: 03.02.04 15:29
Оценка:
Товарищи
Не подскажете как решить следующий вопросец
есть класс


#include <iostream>

using std::ostream;

class CSomeClass
{
/*********
...........
**********/
private:
    ostream& m_OutStream;

};
[/code]

и метод

[ccode]
CSomeClass::SetStream( ostream& outStream )
{
    this->m_Outstream = outStream

}


Компилятор говорит

error C2440: 'type cast' : cannot convert from 'std::ostream' to 'std::basic_ostream<_Elem,_Traits>'


не подскажите, как справиться с этим.
Заранее признателен
Удачи тебе, браток!
Re: ostream&
От: Анатолий Широков СССР  
Дата: 03.02.04 15:33
Оценка:
Здравствуйте, Glоbus, Вы писали:

G>Товарищи

G>Не подскажете как решить следующий вопросец
G>есть класс

G>

G>#include <iostream>

G>using std::ostream;

G>class CSomeClass
G>{
G>/*********
G>...........
G>**********/
G>private:
G>    ostream* m_OutStream;

G>};
G>[/code]

G>и метод

G>[ccode]
G>CSomeClass::SetStream( ostream& outStream )
G>{
    this->>m_Outstream = &outStream;

G>}
G>


G>Компилятор говорит


G>

G>error C2440: 'type cast' : cannot convert from 'std::ostream' to 'std::basic_ostream<_Elem,_Traits>'


G>не подскажите, как справиться с этим.

G>Заранее признателен

Ссылку можно только инициализировать, переприсвоить ссылку нельзя. В данном случае, ты пытался присвоить один стрим другому.
Re: ostream&
От: jazzer Россия Skype: enerjazzer
Дата: 03.02.04 15:35
Оценка:
Здравствуйте, Glоbus, Вы писали:

G>Товарищи

G>Не подскажете как решить следующий вопросец
G>есть класс

G>

G>#include <iostream>

G>using std::ostream;

G>class CSomeClass
G>{
G>/*********
G>...........
G>**********/
G>private:
G>    ostream* m_OutStream;

G>};
G>[/code]

G>и метод

G>[ccode]
G>CSomeClass::SetStream( ostream& outStream )
G>{
    this->m_Outstream = &outStream.

G>}
G>





Используй указатель (см. выделения в коде).
все, что ты делаешь с ссылкой после инициализации (которая происходит в момент ее создания), ты делаешь с объектом, на который ссылка указывает. Т.е. твой = на самом деле пытается позвать operator= у объекта, которым инициализирована ссылка.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: ostream&
От: Bell Россия  
Дата: 03.02.04 15:36
Оценка:
Здравствуйте, Glоbus, Вы писали:


Ссылку — член класса можно инициализировать только в конструкторе в списке инициализации:

CSomeClass::CSomeClass(ostream& outStream) : m_Outstream(outStream) {}


Если это не подходит — используй в CSomeClass указатель на ostream в качестве мембера.
Любите книгу — источник знаний (с) М.Горький
Re: ostream&
От: ArtDenis Россия  
Дата: 03.02.04 15:37
Оценка:
CSomeClass::SetStream( ostream& outStream ) : m_Outstream(outStream)
{

}

А что на это говорит компилятор?
... << RSDN@Home 1.1.2 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: ostream&
От: Bell Россия  
Дата: 03.02.04 15:58
Оценка: +1
Здравствуйте, ArtDenis, Вы писали:

AD>
AD>CSomeClass::SetStream( ostream& outStream ) : m_Outstream(outStream)
AD>{

AD>}
AD>

AD>А что на это говорит компилятор?

Ух ты
А с каких пор у функций появился список инициализации?
Любите книгу — источник знаний (с) М.Горький
Re[2]: ostream&
От: Vamp Россия  
Дата: 03.02.04 15:59
Оценка: :)
AD>А что на это говорит компилятор?
Он молчит. Делает большие глаза и удивленно цокает языком...
Да здравствует мыло душистое и веревка пушистая.
Re[3]: ostream&
От: ArtDenis Россия  
Дата: 03.02.04 16:05
Оценка:
Здравствуйте, Bell, Вы писали:

B>Ух ты

B>А с каких пор у функций появился список инициализации?

Конец рабочего дня, проглядел
... << RSDN@Home 1.1.2 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: ostream&
От: Анатолий Широков СССР  
Дата: 03.02.04 16:14
Оценка:
Здравствуйте, Vamp, Вы писали:

AD>>А что на это говорит компилятор?

V>Он молчит. Делает большие глаза и удивленно цокает языком...

Ну, что же, наш RSDN ONLINE COMPILER не хуже СOMEAU сработал.
Re[2]: ostream&
От: Glоbus Украина  
Дата: 03.02.04 16:17
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, Glоbus, Вы писали:


G>>Товарищи

G>>Не подскажете как решить следующий вопросец
G>>есть класс

G>>

G>>#include <iostream>

G>>using std::ostream;

G>>class CSomeClass
G>>{
G>>/*********
G>>...........
G>>**********/
G>>private:
G>>    ostream* m_OutStream;

G>>};
G>>[/code]

G>>и метод

G>>[ccode]
G>>CSomeClass::SetStream( ostream& outStream )
G>>{
    this->>m_Outstream = &outStream.

G>>}
G>>





J>Используй указатель (см. выделения в коде).

J>все, что ты делаешь с ссылкой после инициализации (которая происходит в момент ее создания), ты делаешь с объектом, на который ссылка указывает. Т.е. твой = на самом деле пытается позвать operator= у объекта, которым инициализирована ссылка.

сто пудов!
прогнал реально
спасибо
Удачи тебе, браток!
Re[3]: ostream&
От: ArtDenis Россия  
Дата: 03.02.04 16:29
Оценка:
Здравствуйте, Vamp, Вы писали:

AD>>А что на это говорит компилятор?

V>Он молчит. Делает большие глаза и удивленно цокает языком...

Ну ещё бы, ошибку "CHANGE YOUR BRAINS" разработчики компилятора не предусмотрели
... << RSDN@Home 1.1.2 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.