Вопрос-Ответ (C++)
| |
Kornival | Дата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1 |
The Witcher
Сейчас нет на сайте
| Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.
Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
|
|
| |
mopo | Дата: Пятница, 06 Апреля 2012, 10:24 | Сообщение # 221 |
был не раз
Сейчас нет на сайте
| vasua99, Добрый день. Мой тебе совет, посмотри еще по поводу наследования, спецификаторов доступа. Если хочешь чтобы, наследуемые классы , могли обращаться к переменным, но переменные были закрыты. То используй спецификатор доступа protected(защищенный)/
Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.
Сообщение отредактировал mopo - Пятница, 06 Апреля 2012, 12:05 |
|
| |
vasua99 | Дата: Пятница, 06 Апреля 2012, 13:33 | Сообщение # 222 |
GNU follower
Сейчас нет на сайте
| не,я имею ввиду,если я в наследуемом классе переопределил функцию,кторая обращается к закрытой переменной базового классе,в базовой классе при этом также было
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
mopo | Дата: Пятница, 06 Апреля 2012, 14:36 | Сообщение # 223 |
был не раз
Сейчас нет на сайте
| vasua99, Когда ты делаешь производный класс из базового класса, производный класс может обращаться к общим элементам базового класса, как будто эти элементы определены внутри самого производного класса. Для доступа к частным данным(private) базового класса производный класс должен использовать интерфейсные функции базового класса.
Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.
|
|
| |
vasua99 | Дата: Пятница, 06 Апреля 2012, 20:48 | Сообщение # 224 |
GNU follower
Сейчас нет на сайте
| ну это я понял,но если ты эту виртуальную интерфейсную функцию перегрузил,эх ладно вот пример: [code] class Test { public: virtual void print() { cout << a; } private: int a,b; };
class SubTest : public Test { public: void print() { cout << b; } }; [\code]
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
mopo | Дата: Суббота, 07 Апреля 2012, 14:33 | Сообщение # 225 |
был не раз
Сейчас нет на сайте
| vasua99, Добрый день. Я вот немного по другому сделал: Code class Test { public: int a,b; private: virtual void print() =0 ; };
class SubTest : public Test { public: virtual void print() { cout << b; cout << a; } }; компилятор ошибок не выдал)
Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.
Сообщение отредактировал mopo - Суббота, 07 Апреля 2012, 19:59 |
|
| |
goldsphere | Дата: Суббота, 07 Апреля 2012, 15:38 | Сообщение # 226 |
заслуженный участник
Сейчас нет на сайте
| Подскажите, пожалуйста - чем класс(class) отличается от структуры(struct)?
FinderX - Android Аркада
Сообщение отредактировал goldsphere - Суббота, 07 Апреля 2012, 15:39 |
|
| |
vasua99 | Дата: Суббота, 07 Апреля 2012, 17:02 | Сообщение # 227 |
GNU follower
Сейчас нет на сайте
| в с++,практически ниче,разве только типы доступа по умолчанию разные,если я себя помню)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
warzes | Дата: Суббота, 07 Апреля 2012, 17:25 | Сообщение # 228 |
участник
Сейчас нет на сайте
| Quote (goldsphere) Подскажите, пожалуйста - чем класс(class) отличается от структуры(struct)? Отличие тонки. Все поля структуры по умолчанию публичны, тогда как все поля класса по умолчанию приватны. Собственно больше и нет каких-то важных отличий (хотя не знаю, можно ли структуры наследовать - не пробовал) Вообще так - если объект ничего не делает а содержит набор каких-то переменных, то используем структуру если объект должен работать с этими переменными, то используем класс. А если все это сложно, то вообще забываем про структуру и используем классы
Мой блог Вики DirectX
|
|
| |
vasua99 | Дата: Суббота, 07 Апреля 2012, 18:05 | Сообщение # 229 |
GNU follower
Сейчас нет на сайте
| Не знаю как другие,я делаю так - если что-либо нельзя выразить через одну переменную,тогда использую струкуру,а если + нужно работать с данными,тогда использую класс.
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Gavolot | Дата: Суббота, 07 Апреля 2012, 23:46 | Сообщение # 230 |
Последователь Тени
Сейчас нет на сайте
| Вопрос такой простой, я все-же реализовал в консоли передвижение и сохранение за собой игроком других символов. Ну тоесть стоит там где-то в двумерном массиве буква Т то он сначала войдет в неё, заменит то поле собой, а после того как выйдет, буква тут же вернется и так-же любые другие символы. Так вот вопрос, а от моргания при перерисовке можно избавиться только в каком-то движке или в консоли тоже есть способ избавления от моргания? А то system("cls"); моргает зараза) Добавлено (07.04.2012, 23:46) --------------------------------------------- Самое смешное проблема была в том, что указатель не может заменять собой двумерный массив, а может только хранить адрес одной точки из него)))
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |
TimKruz | Дата: Воскресенье, 08 Апреля 2012, 00:14 | Сообщение # 231 |
старожил
Сейчас нет на сайте
| Quote (Gavolot) Так вот вопрос, а от моргания при перерисовке можно избавиться только в каком-то движке или в консоли тоже есть способ избавления от моргания? А то system("cls"); моргает зараза) Способ - рисовать картинку в буфере и потом выводить на экран целиком. Можно использовать ассемблерные вставки или функции winapi для ускорения. Моргание происходит из-за того, что вывод на экран происходит быстрее, чем вывод на окно программы. Кстати, зачем стирать (system("cls")) предыдущее изображение? Его можно либо перекрывать новым, либо перерисовывать только отдельные его части. Есть ещё способ - использовать 2 видео-страницы (рисуешь на невидимой, переключаешь, рисуешь на второй - теперь невидимой, а невидимая стала видимой), но там как-то сложно всё устроено. Однако, если у тебя псевдографика (символы) - переключение делается без проблем одним прерыванием DOS. Только вывод на экран, скорей всего, придётся делать особым, с учётом смещения страницы.
|
|
| |
Gavolot | Дата: Воскресенье, 08 Апреля 2012, 00:56 | Сообщение # 232 |
Последователь Тени
Сейчас нет на сайте
| Да, у меня самые обычные символы)) Но блин я мало, что знаю о прерываниях и т.п., может хоть есть ссылка на русский урок на подобную тему))
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Сообщение отредактировал Gavolot - Воскресенье, 08 Апреля 2012, 01:46 |
|
| |
vasua99 | Дата: Воскресенье, 08 Апреля 2012, 06:31 | Сообщение # 233 |
GNU follower
Сейчас нет на сайте
| www.codenet.ru/progr/dos/
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Aikidos | Дата: Понедельник, 09 Апреля 2012, 00:52 | Сообщение # 234 |
постоянный участник
Сейчас нет на сайте
| Столкнулся с одной проблемой и даже незнаю как её решить.
Есть, допустим, ассоциативный массив:
Code for (std::map < int, int >::iterator It = myMap.begin(); It != myMap.end(); ++ It) { if (It->first == 5) It = myMap.begin(); }
Так вот. После того, как он доходит до 5 и возвращает назад, то в следующий раз начинает не с первого элемента в массиве, а со второго. Как это обойти? Уже всё перепробовал
Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
Сообщение отредактировал Aikidos - Понедельник, 09 Апреля 2012, 00:53 |
|
| |
Нохчи | Дата: Понедельник, 09 Апреля 2012, 01:01 | Сообщение # 235 |
заслуженный участник
Сейчас нет на сайте
| Странно конечно, сейчас посмотрю.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Aikidos | Дата: Понедельник, 09 Апреля 2012, 01:15 | Сообщение # 236 |
постоянный участник
Сейчас нет на сайте
| Quote (Нохчи) Странно конечно, сейчас посмотрю. Да капец. Было много-много-много кода, который криво работал. День потратил, чтобы найти в чем баг и оказалось что баг в этой особенности std. Есть, конечно, вариант написать свою реализацию, но может это я ступил и есть выход из данной ситуации.
Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
|
|
| |
Нохчи | Дата: Понедельник, 09 Апреля 2012, 01:17 | Сообщение # 237 |
заслуженный участник
Сейчас нет на сайте
| Какой еще особенности? Проверил студийным компилятором - работает как часы.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Aikidos | Дата: Понедельник, 09 Апреля 2012, 01:18 | Сообщение # 238 |
постоянный участник
Сейчас нет на сайте
| Quote (Нохчи) Какой еще особенности? Проверил студийным компилятором - работает как часы. У меня тоже студийный компилятор. Какая студия?
Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
|
|
| |
Нохчи | Дата: Понедельник, 09 Апреля 2012, 01:19 | Сообщение # 239 |
заслуженный участник
Сейчас нет на сайте
| Visual C++ 2008 стоит. Прошелся пошагово в отладочном режиме, никаких аномалий не было.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Aikidos | Дата: Понедельник, 09 Апреля 2012, 01:25 | Сообщение # 240 |
постоянный участник
Сейчас нет на сайте
|
P.s. снял бы видео, если бы не было влом Добавлено (09.04.2012, 01:25) --------------------------------------------- Код заполнения:
Code std::map < int, int > myMap; for (int i = 0; i < 10; i ++) { myMap[i] = i; }
Студия 2010.
Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
|
|
| |
|