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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
#1

Возможно ли это на с++? - C++

07.08.2011, 19:46. Просмотров 2670. Ответов 56
Метки нет (Все метки)

Допустим есть класс
Код
class MyBool{
int data;
//Читаем бит номер num
bool GetVal(num){return data&(1<<num);}
//Записываем в бит номер num значение val
void SetVal(num,val){val?data|=(1<<num):data&=~(1<<num);}
};
т.е. определены побитовое хранение булевых значений, их чтение и запись.
А теперь вопрос: Существует ли способ определить операторы так, чтобы работал следующий код:
Код
MyBool a;
if(a[0])
    a[1]=true;
Соответственно a[0] делает GetVal(0), a[1]=true делает SetVal(1,true)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2011, 19:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возможно ли это на с++? (C++):

Структура в классе, это возможно? - C++
У меня такая проблема, нужно реализовать объект-список. В нем необходимо реализовать методы обеспечивающие полную функциональность списка. ...

Возможно ли это заменить циклом? - C++
Здравствуйте! Подскажите, как этот фрагмент, можно заменить циклом? ... cout &lt;&lt; &quot;Введите количество часов: &quot;; cin &gt;&gt; hours1 &gt;&gt;...

Как это возможно сделать? - C++
Как это сделать на с++

Partition для map. Возможно ли это? - C++
Доброго времени суток, скажите пожалуйста, как применить parttition для map, если это возможно. Нашел информацию для vector-а, с map...

Доступ к переменной только из двух функций. Возможно ли это? - C++
Две функции, не члены класса, одна из них должна писать в переменную, другая эту переменную читать и больше ни где эта переменная должна...

Заменить оператор goto на цикл, если это возможно - C++
Есть простой таймер #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; int main(){ ...

56
Bers
Заблокирован
07.08.2011, 19:50 #2
Да. Такое возможно.
Смотрите в сторону "перегрузка операторов в с++"
0
LosAngeles
Заблокирован
07.08.2011, 19:51 #3
vector<bool> специализация вектора
0
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
07.08.2011, 19:54  [ТС] #4
vector<bool> не годится т.к. bool по умолчанию например в студии определяется как byte, а это в 8 раз больше нужного.
Сейчас конечно еще раз почитаю про перегрузку, но не факт что найду этот момент.
0
Bers
Заблокирован
07.08.2011, 19:57 #5
Цитата Сообщение от Teravisor Посмотреть сообщение
vector<bool> не годится т.к. bool по умолчанию например в студии определяется как byte, а это в 8 раз больше нужного.
Сейчас конечно еще раз почитаю про перегрузку, но не факт что найду этот момент.
перегрузка operator []
перегрузка operator=
0
LosAngeles
Заблокирован
07.08.2011, 19:58 #6
Цитата Сообщение от Teravisor Посмотреть сообщение
vector<bool> не годится т.к. bool по умолчанию например в студии определяется как byte, а это в 8 раз больше нужного.
Сейчас конечно еще раз почитаю про перегрузку, но не факт что найду этот момент.
в vector<bool> bool - 1 бит, он специализирован
1
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
07.08.2011, 20:01  [ТС] #7
Цитата Сообщение от Bers Посмотреть сообщение
перегрузка operator []
перегрузка operator=
И как перегрузить оператор =, если оператор [] должен возвращать bool, а оператор = не имеет возможности получить параметр, передаваемый в оператор []?
Вопрос не так прост, как кажется.

Цитата Сообщение от LosAngeles Посмотреть сообщение
в vector<bool> bool - 1 бит, он специализирован
Причины две: во-первых, я хочу понять этот момент, а во-вторых, можно погуглить на "vector<bool>" и первая же ссылка покажет почему он плох.
0
LosAngeles
Заблокирован
07.08.2011, 20:04 #8
Цитата Сообщение от Teravisor Посмотреть сообщение
Причины две: во-первых, я хочу понять этот момент, а во-вторых, можно погуглить на "vector<bool>" и первая же ссылка покажет почему он плох.
да? и почему? озвучивай только те причины, которые мешают тебе использовать его конкретно в этом примере
0
Сыроежка
Заблокирован
07.08.2011, 20:04 #9
Цитата Сообщение от Teravisor Посмотреть сообщение
vector<bool> не годится т.к. bool по умолчанию например в студии определяется как byte, а это в 8 раз больше нужного.
Сейчас конечно еще раз почитаю про перегрузку, но не факт что найду этот момент.
bool не определяется как byte. Оно может определяться разными способами. Представление объектов типа bool в стандарте не оговорено. Так что не следует расчитывать на то, что bool будет соответствовать по размеру байту.
1
LosAngeles
Заблокирован
07.08.2011, 20:05 #10
bool& должен возвращать [] если хочешь с нуля писать
0
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
07.08.2011, 20:14  [ТС] #11
Цитата Сообщение от LosAngeles Посмотреть сообщение
да? и почему? озвучивай только те причины, которые мешают тебе использовать его конкретно в этом примере
Больше любопытство. Но по сути, мне интересно было именно поставить вопрос про это. А что если мне то же самое понадобится делать, но уже по два бита? Это - всего лишь один пример.

Цитата Сообщение от Сыроежка Посмотреть сообщение
bool не определяется как byte. Оно может определяться разными способами. Представление объектов типа bool в стандарте не оговорено. Так что не следует расчитывать на то, что bool будет соответствовать по размеру байту.
Вот именно потому, что и не оговорено, нигде нет гарантии, что отводится именно бит.

Цитата Сообщение от LosAngeles Посмотреть сообщение
bool& должен возвращать [] если хочешь с нуля писать
и как вы себе представляете ссылку на второй бит этого инта?
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2011, 20:16 #12
std::bitset запретили чтоли?
2
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
07.08.2011, 20:18  [ТС] #13
Цитата Сообщение от alex_x_x Посмотреть сообщение
std::bitset запретили чтоли?
Я на него не набредал еще. Сейчас посмотрю, спасибо.
0
LosAngeles
Заблокирован
07.08.2011, 20:20 #14
ты уж сам определись что ты хочешь

Цитата Сообщение от Teravisor Посмотреть сообщение
побитовое хранение булевых значений
в таком случае о таком синтаксисе забудь
Цитата Сообщение от Teravisor Посмотреть сообщение
a[1]=true;
1
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
07.08.2011, 20:21  [ТС] #15
Цитата Сообщение от LosAngeles Посмотреть сообщение
ты уж сам определись что ты хочешь


в таком случае о таком синтаксисе забудь
Я изначально спросил - возможно ли это. Все равно, спасибо за внимание.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2011, 20:21
Привет! Вот еще темы с ответами:

Доступ к данным в *.mdb посредством OLE DB -- это возможно? - C++
Почти две недели бьюсь над этой проблемой. Перерыл весь инет, книжку по OLE DB купил... Не могу понять каким образом через OLE DB...

Как записать в вектор структуру? Это вообще возможно сделать? - C++
Привет всем! Как записать в вектор структуру? Это вообще возможно сделать? Надо, чтоб первая строка из файла записывалась в вектор,...

Рекурсивная программа. Составить пары из группы, если это возможно - C++
Ребят, срочно нужна помощь! Не прошу делать что-то за меня, просто подскажите способ реализации?

Возможно ли создать свою фцию system() и как это сделать? - C++
Возникла потребность реализовать вызов ф-ции system() без упоминания таковой (то есть слова system). Как можно это сделать. Возможно ли...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
07.08.2011, 20:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru