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

Конструктор со строкой - именем файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчёт контрольной суммы http://www.cyberforum.ru/cpp-beginners/thread1798567.html
Приветствую! Необходимо подсчитать 32-битную сумму для файла checksum = word1 + word2 + ... + wordN. Я недавно читал про little- и -big-endian. В связи с этим вопрос. Если я буду считывать данные из файла 32-битными словами, то на машинах с разным порядком следования байтов в слове, будет разный результат? Как этого избежать?
C++ Как реализовать систему захвата клавиш в MacOS? Привет, форумчане! Подскажите как реализовать систему захвата клавиш? Хотябы стрелочки. Сижу на MacOS, пишу в среде XCode. Проблема такая, что пробовал с "switch(getch)" (или как-то так) не работает. Буду благодарен за любую помощь! Спасибо! Добавлено через 2 часа 49 минут Парни, выручайте! Добавлено через 2 часа 21 минуту Форум мертв? :D http://www.cyberforum.ru/cpp-beginners/thread1798566.html
Наследование. Очистка памяти в производном классе C++
Создаю базовый класс ParentClass, содержащий в качестве объекта массив (выделяется динамический массив в зависимости от указанного пользователем размера). Затем потомок DerivedClass. Вопрос: будет ли утечка памяти при работе с производным классом? Если вызывать в деструкторе деструктор родителя, то программа выдает ошибку. cla.h #pragma once #include <cstdlib> class ParentClass {...
C++ Непонятен синтаксис шаблонов из кода boost для вычисления факториала
Доброго дня, уважаемые форумчане. Просьба ответить на вопрос в чем смысл дивных конструкций из примера внизу. http://www.boost.org/doc/libs/1_48_0/libs/phoenix/example/factorial.cpp /*============================================================================= Copyright (c) 2001-2003 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying ...
C++ Написание програмы по полёту ракеты http://www.cyberforum.ru/cpp-beginners/thread1798523.html
Очень надеюсь, что найдётся человек, которому не лень помочь. Просто я сильно провтыкался с дэдлайном в ВУЗе и сейчас в форсированом режиме делаю курсовую, так-как бедный студент приобрести не могу, но если появятся деньги могу отблагодарить за помощь. Курсовая довольно-таки обширная и програма это лишь малая часть, но с ней проблем у меня с головой, ведь языки програмирования знаю очень слабо,...
C++ Вектор выходит за диапазон Здравствуйте. :) Как сделать так чтобы вектор не выходил за диапазон? #include <iostream> #include <vector> using namespace std; int main() { int k; подробнее

Показать сообщение отдельно
Babysitter
 Аватар для Babysitter
78 / 103 / 34
Регистрация: 23.11.2015
Сообщений: 315
Завершенные тесты: 1
25.08.2016, 14:47     Конструктор со строкой - именем файла
есть класс вида
C++
1
2
3
4
class A {
    B b;
/* ... */
};
а у класса B конструктор B(istream&), дефолтного нет
если сделать у А конструктор такого же вида, то все хорошо
C++
1
A::A(istream& file) : b(file), /* ... */ {}
а есть ли способ не описывая дефолтный конструктор у B
изменить конструктор A, чтобы он принимал имя файла

например так
C++
1
2
3
4
5
6
class A {
    ifstream file;
    B b;
/* ... */
    A(const string& name) : file(name, ios_base::in), b(file), /* ... */ {}
};
но в этом случае мы получаем себе поле без копирующего конструктора,
да и вообще не хотелось бы владеть никакими ресурсами - открыл в конструкторе
поток, считал все и закрыл.
но на момент входа в тело конструктора b() уже должен быть вызван..

единственные решения -
оставить конструктор A(istream&) и не заниматься ерундой или
написать дефолтный конструктор для B и не заниматься ерундой?

Добавлено через 2 минуты
видимо что-то такое может сработать
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct B
{
    B(ifstream&& x) {}
};
 
struct A
{
    B b;
    A(const string& name) : b(ifstream(name, ios_base::in)) {}
};
 
int main()
{
    A a("hello");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru