Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В c-tor передаю ссылку созданного std::ifstream 
V
    Опции темы
EvilsInterrupt
Дата 21.8.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Сложно было описать суть вопроса в теме, поэтому прошу прощения )

В ввиду того что с С++ сейчас все реже и реже контактирую, многое забывается (((

Ситуация проста у меня есть класс, который внутри себя имеет приватные объект std::ifstream и объект еще одного класса созданного мною.
В секции инициализации при попытке создания моего класса передаю ссылку(как я думаю) получаю ошибку компиляции.

Примерный код того что происходит у меня, таков:
Код

class Image
{
public:
    Image( std::iostream& streamRef )
        : stream( streamRef )
    {}
private:
    std::iostream& stream;
};


class Calculator
{
public:
    Calculator()
        : image( srcFile )
    {
    }

    void openSource( const std::string& filename );
private:
    std::ifstream   srcFile;
    Image           image;
};


Ошибка, как вы уже догадались возможно, такая:
Цитата

1>e:\source\proba\proba.cpp(20) : error C2664: 'Image::Image(std::iostream &)' : cannot convert parameter 1 from 'std::ifstream' to 'std::iostream &'


Вопросы:
1) Разрешено ли такое? Мне думается да, ведь объект std::ifstream декларирован раньше, чем объект моего класса и поэтому уже создан!
2) Как лучше спроектировать? Я хочу сделать независимым от стрима класс Image и поэтому принимаю ссылку на стрим.

Это сообщение отредактировал(а) EvilsInterrupt - 21.8.2011, 17:01
PM MAIL WWW ICQ Jabber   Вверх
boostcoder
Дата 21.8.2011, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



http://liveworkspace.org/code/c69579234e34...4fe4ae5f2f950e9

Добавлено через 2 минуты и 26 секунд
или так: http://liveworkspace.org/code/0226e7bad31e...f8eeb859a6a44c6
PM WWW   Вверх
EvilsInterrupt
Дата 21.8.2011, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



boostcoder
Второй вариант, что был добавлен лучше отражает мое стремление.
Я вижу что дело в том что я должен указать явно std::istream. Но если верить этой страничке то разве не могу принимать std::iostream ? он ведь является частично и std::istream-ом!!!

Добавлено через 24 секунды
А вообще спасибо, за попытку помочь! ;)
PM MAIL WWW ICQ Jabber   Вверх
mes
Дата 21.8.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(EvilsInterrupt @  21.8.2011,  16:00 Найти цитируемый пост)
    Calculator()
        : image( srcFile )
 ..

    std::ifstream   srcFile;
   Image           image;

что то подсказывает, что с архитектурой перемудрили..

Добавлено через 1 минуту и 37 секунд
Цитата(EvilsInterrupt @  21.8.2011,  16:30 Найти цитируемый пост)
Но если верить этой страничке то разве не могу принимать std::iostream ? 

ну прежде всего Вы ifstream хотите использовать как iostream, а он уже поопределению неполон.. 



--------------------
PM MAIL WWW   Вверх
EvilsInterrupt
Дата 21.8.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



mes
Цитата

что то подсказывает, что с архитектурой перемудрили..

Не исключено! ;))) Но видимо это уже другая тема.
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.