99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||
1 | ||||||
Можно ли каким-то образом наследовать тип bool02.05.2014, 01:27. Показов 2546. Ответов 21
Метки нет (Все метки)
Здраствуйте, можно ли каким то образом наследовать тип bool
типо что бы 1 - man типо что бы 0 - woman что то в таком роде:
да ток что бы методы cin и cout корректно выводили строки , а не 1 или 0 как в boolalpha
0
|
02.05.2014, 01:27 | |
Ответы с готовыми решениями:
21
почему $_FILES не всегда определяет тип файла? каким образом можно определить тип в 100% случаях? Каким образом тип значений взаимодействует с ссылочным типом Можно ли использовать DAO вместо Ado и если Можно то каким образом? Можно ли каким-то образом закрыть от записи повреждённые сектора, оставив только те, с которыми можно работать? |
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
02.05.2014, 02:36 | 2 |
eXPonent, наследовать можно только class type.
Почему бы просто не определить для этого типа operator>> и operator<<, которые будут выводить то, что нужно?
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
02.05.2014, 06:28 | 3 | |||||
Если очень хочется впихнуть наследование, то можно так:
Ну и оператор можно перегрузить для обычного enum. Если C++11 использовать нельзя, а сэкономить на спичках ну очень хочется, у gcc есть флаг short-enums, который заставляет компилятор использовать для перечислений минимально возможный размер. Но тут нужно осторожно - в этом случае все компоненты программы должны быть собраны с этим флагом, чтобы не огрести от разного выравнивания в структурах, например. Стоит ли говорить, что это только добавит головняка.
1
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||
02.05.2014, 07:57 [ТС] | 4 | |||||
DrOffset, как определить такой тип, как экземпляр bool ?
0x10, код
(14): error C2236: непредвиденные "class" "Gender". Возможно, отсутствует ";" (14): error C3381: Gender: спецификаторы доступа к сборке доступны только в коде, скомпилированном с параметром /clr (15): error C2062: тип "bool" не требуется (16): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию (18): error C2143: синтаксическая ошибка: отсутствие ";" перед "}" (18): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.05.2014, 08:04 | 5 |
eXPonent, именно по этой причине я стараюсь не забывать ссылку на ideone - чтобы было видно, что код рабочий и что необходим компилятор с поддержкой С++11, как видно по ссылке в правом верхнем углу. И ниже специально пояснил.
0
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|
02.05.2014, 08:13 [ТС] | 6 |
как определить такой тип, как экземпляр bool ?
без наследования
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.05.2014, 08:30 | 7 |
Не понимаю вопроса. Мб Вам нужен оператор приведения к bool в классе? Но учитывая контекст, это странно.
0
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|
02.05.2014, 08:37 [ТС] | 8 |
Нет мне нужно что то вроде точной копии bool
только с перегруженными операторами ввода и вывода
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.05.2014, 08:43 | 9 |
А обычный enum почему не подходит?
0
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|
02.05.2014, 08:44 [ТС] | 10 |
пишу под стандартом С++10
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
02.05.2014, 08:46 | 11 | |||||
Сообщение было отмечено eXPonent как решение
Решение
Нет такого стандарта.
Да я же выше написал, что можно enum использовать, а не enum class:
1
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|||||||||||
02.05.2014, 14:27 [ТС] | 12 | ||||||||||
Спасибо
Как правильно организовать
Добавлено через 20 минут Что бы можно была вводить как Woman и Man Так и 1 и 0
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.05.2014, 14:40 | 13 |
Это как раз та причина, по которой я не изобретаю свои форматы, а сериализую все в xml/json/boost::serialization.
Нужно парсить содержимое потока. При такой постановке - наверное, посимвольно. Пример для одного символа: http://www.cplusplus.com/refer... eam/unget/ Что важно: в случае ошибки при чтении содержимое потока должно остаться таким же, каким было до попытки чтения. Т.е. если извлекли из потока данные, определили, что они невалидные, их нужно положить обратно. При этом не забыть выставить флаг failbit.
1
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|
02.05.2014, 14:54 [ТС] | 14 |
А как то можно узнать типу потока которого отправляют?
Или он всё равно идёт посимвольный
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.05.2014, 15:09 | 15 |
Не понял вопроса.
Какой тип потока? Иерархия потоков есть тут http://www.cplusplus.com/refer... ingstream/ Содержимое потока - в любом случае байты. Другое дело - как их интерпретировать.
0
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|
02.05.2014, 15:11 [ТС] | 16 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.05.2014, 15:12 | 17 |
Выше как раз ссылка на этот пример. Еще вариант - http://www.cplusplus.com/refer... m/putback/
0
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||
03.05.2014, 11:13 [ТС] | 18 | |||||
Что делать с потоком потом если установить failbit
Добавлено через 21 секунду ??? Добавлено через 7 минут Как из потока выкинуть символы разделители Добавлено через 13 часов 16 минут Как обработать данный оператор с помощью обработчика исключений?
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
03.05.2014, 11:19 | 19 |
Страшное дело)
Видимо, посимвольно выгребать. peek + getc. Уже ничего. По идее, установка флага ошибки - это последнее действие перед возвратом из функции. Просто так функции работы с потоками исключений кидать не будут, это нужно указать явно. Начать читать можно отсюда - http://www.cplusplus.com/refer... xceptions/ Как я уже сказал выше, с продвинутым и правильным во все поля чтением из стандартных потоков мне работать не приходилось, так что мои навыки тут сводятся к чтению документации. Кастую в тред кого-нибудь, кто на этом собаку съел.
0
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||
03.05.2014, 12:44 [ТС] | 20 | |||||
Окончательный вариант:
0
|
03.05.2014, 12:44 | |
03.05.2014, 12:44 | |
Помогаю со студенческими работами здесь
20
Можно ли сделать бесконечный цикл с while, используя тип bool? Каким образом можно сократить if? Каким образом можно получить пр 9 Каким образом можно распарсить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |