Суббота, 16 Ноября 2024, 21:39

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (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 и возвращает назад, то в следующий раз начинает не с первого элемента в массиве, а со второго. Как это обойти? Уже всё перепробовал sad


Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.

Сообщение отредактировал 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. снял бы видео, если бы не было влом biggrin

Добавлено (09.04.2012, 01:25)
---------------------------------------------
Код заполнения:

Code
std::map < int, int > myMap;  
for (int i = 0; i < 10; i ++)
{
  myMap[i] = i;
}


Студия 2010.


Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг