Пятница, 15 Ноября 2024, 21:26

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
warzesДата: Воскресенье, 30 Сентября 2012, 15:32 | Сообщение # 681
участник
Сейчас нет на сайте
Quote (Drac)
мне нужны окна, кнопки и тому подобное ! Так как азы уже давно позади.

Это тебе не формошлепство:). Изучай теперь WinAPI (те самые окна, кнопки), MFC (никогда не изучал и вообще сторонюсь этого монстра). Qt или WxWidget (в отличие от первых двух - мультиплатформа, да и код более понятный, но доки на русском нет)


Мой блог
Вики DirectX
LevriteДата: Воскресенье, 30 Сентября 2012, 18:57 | Сообщение # 682
участник
Сейчас нет на сайте
Quote (warzes)
Qt

Есть книга, Бланшет,Саммерфилд - QT4 Программирование GUI на С++.2ed.2008. Поищи.


vasua99Дата: Понедельник, 08 Октября 2012, 15:02 | Сообщение # 683
GNU follower
Сейчас нет на сайте
Подскажиет что за проблема в моем коде:

Code

// вычисление простых чисел
#include <iostream>
using namespace std;

int main() {
  for(int i = 0; i < 1000000; i++) {
   bool simple = true;
   for(int j = 0; j < 1000000; j++)
    if(i % j)
     simple = false;
   if(simple)
    cout << i << ' ';
  }
  return 0;
}

Компилится нормально, но при запуске выдает -
Code
Floating point exception (core dumped)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
ComentДата: Понедельник, 08 Октября 2012, 15:18 | Сообщение # 684
почетный гость
Сейчас нет на сайте
Есть подозрения что на ноль делить нельзя. "(i%j)" ИМХО конечно smile

Сообщение отредактировал Coment - Понедельник, 08 Октября 2012, 15:19
vasua99Дата: Понедельник, 08 Октября 2012, 15:35 | Сообщение # 685
GNU follower
Сейчас нет на сайте
решил так)):

Code

#include <iostream>
using namespace std;

int main() {
  bool simple;
  for(int i = 2; i < 10000; i++) {
   simple = true;
   for(int j = 2; i > j; j++)
    if(!(i % j))
     simple = false;
   if(simple)
    cout << i << ' ';
  }
  cout << '\n';
  return 0;
}


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
kikas86Дата: Воскресенье, 21 Октября 2012, 19:06 | Сообщение # 686
постоянный участник
Сейчас нет на сайте
Объясните пожалуйста почему в WM_TIMER

Code
x++;  
hdc=BeginPaint(hwnd, &ps);  
TextOut(hdc, x,10, "СЧИТАЛКА", 10);


Не работает, объясните если не правильно как сделать бегущую строку?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.
MR_BorgДата: Воскресенье, 21 Октября 2012, 21:09 | Сообщение # 687
участник
Сейчас нет на сайте
Здравствуйте. Интересует такой вопрос. Есть класс GameObject в котором хранится различная информация. Этот класс хранится в векторе.
При удалении какого либо объекта из вектора достаточно ли применить earse?


Изучаю C++ попутно пишу игру.
SWFcreatorДата: Суббота, 03 Ноября 2012, 21:12 | Сообщение # 688
участник
Сейчас нет на сайте
Всем привет! Есть вопрос к хорошо знающим С людям. Есть переменная, одна функция ее изменяет, другая использует. Никакой связи между функциями нет. Функции выполняются как события. Очевидно, что переменная должна быть глобальной. Но мне интересно организовать это без глобальности, так чтоб другие функции ее не видели. Просто интересно, если хотите, считайте это моей причудой smile . Пример абстрактный, в проге немного не так. Вот моя идея:
Code

    void init(void)
    {
      static int a, b;       //static чтобы не удалились после выполнения init
      func_a::a = &a;
      func_b::b = &b;
      //добавить функции как обработчики событий
    }

    void func_a(void)
    {
      static int *a;
      printf("%i\n", *a)
    }

    void func_b(void)
    {
      static int *b;
      *b = *b + 10;
    }

    int main(void)
    {
      init();
      loop();
      return 0;
    }

Вопрос:
я хотел бы сделать так, но 2-я и 3-я строчки из init() некорректные. Как инициализировать статик переменную функции из другой функции? В С++ статик переменные класса можно изменять, а как в С? Есть возможность?


Сообщение отредактировал SWFcreator - Суббота, 03 Ноября 2012, 21:12
НохчиДата: Суббота, 03 Ноября 2012, 21:39 | Сообщение # 689
заслуженный участник
Сейчас нет на сайте
Quote (SWFcreator)
Есть возможность?

Нет конечно. Иначе какой смысл в локальных переменных.


Многие вопросы по Windows отпадут, если посмотреть тут
SWFcreatorДата: Суббота, 03 Ноября 2012, 21:48 | Сообщение # 690
участник
Сейчас нет на сайте
Но ведь она только с виду локальная smile , она все равно существует в памяти, так почему бы ее не изменить? Идея в том, что бы 1 раз завязать указатели на одну переменную, а потом использовать значения локальных указателей. Есть идея добавить функциям дополнительный необязательный параметр, указателям присвоить его и один раз вызвать функции с ним. Сделать макросы без дополнительного параметра и использовать дальше их, но это уже как-то криво.
НохчиДата: Суббота, 03 Ноября 2012, 22:09 | Сообщение # 691
заслуженный участник
Сейчас нет на сайте
Quote (SWFcreator)
Но ведь она только с виду локальная

Она локальная, хоть и не стековая, а значит доступ извне к ней не предусмотрен. Извратиться и получить указатель на нее можно конечно, но это будет очень грязный и уродливый хак - так не делают. Испоьзуй глобальную переменную.


Многие вопросы по Windows отпадут, если посмотреть тут
SWFcreatorДата: Суббота, 03 Ноября 2012, 22:21 | Сообщение # 692
участник
Сейчас нет на сайте
Ладно, спасибо в любом случае.
DeswingДата: Суббота, 17 Ноября 2012, 15:57 | Сообщение # 693
заслуженный участник
Сейчас нет на сайте
а разницы между ++i и i++ нет?
goldsphereДата: Суббота, 17 Ноября 2012, 16:29 | Сообщение # 694
заслуженный участник
Сейчас нет на сайте
Вот "кусок" кода из класса объекта:

вылетает на строчке
Code
texture=hge->Texture_Load(_texture);

со словами Нарушение прав доступа при чтении "0x00000000".
0x00000000 - это у нас переменная hge типа *HGE, не могу понять почему он вылетает, помогите.


FinderX - Android Аркада

Сообщение отредактировал goldsphere - Суббота, 17 Ноября 2012, 16:29
05142Дата: Суббота, 17 Ноября 2012, 17:02 | Сообщение # 695
постоянный участник
Сейчас нет на сайте
Deswing,

i++ возвращает i а потом только прибавляет 1 к i
++i прибавляет 1 к i а потом возвращает полученное значение

Пример:

Code
int i = 1;  
cout << ++i << ' ';
cout << i;

Выведет 2 2
Code
int i = 1;  
cout << i++ << ' ';
cout << i;

Выведет 1 2

Добавлено (17.11.2012, 17:02)
---------------------------------------------
goldsphere, hge = new HGE или что то в этом роде должно быть. Есть такое?


mecinvader
goldsphereДата: Воскресенье, 18 Ноября 2012, 08:54 | Сообщение # 696
заслуженный участник
Сейчас нет на сайте
Quote (05142)
goldsphere, hge = new HGE или что то в этом роде должно быть. Есть такое?

есть HGE *hge;


FinderX - Android Аркада
RUNGOGET2THECHOPAHДата: Воскресенье, 18 Ноября 2012, 10:26 | Сообщение # 697
участник
Сейчас нет на сайте
goldsphere, если ты объявишь один лишь указатель, то выделится память только под указатель, а не под данные, на которые он ссылается. А потом ты пытаешься обратиться к этим данным, что и приводит к ошибке доступа. Должна быть какая-то функция инициализации или что-то в этом духе, руководство по движку тебе в помощь.
MR_BorgДата: Воскресенье, 18 Ноября 2012, 10:39 | Сообщение # 698
участник
Сейчас нет на сайте
goldsphere,
у вас загрузка текстуры обьявлена позже создания спрайта, переставьте местами.


Изучаю C++ попутно пишу игру.

Сообщение отредактировал MR_Borg - Воскресенье, 18 Ноября 2012, 10:39
goldsphereДата: Воскресенье, 18 Ноября 2012, 11:15 | Сообщение # 699
заслуженный участник
Сейчас нет на сайте
Quote (RUNGOGET2THECHOPAH)
goldsphere, если ты объявишь один лишь указатель, то выделится память только под указатель, а не под данные, на которые он ссылается. А потом ты пытаешься обратиться к этим данным, что и приводит к ошибке доступа. Должна быть какая-то функция инициализации или что-то в этом духе, руководство по движку тебе в помощь.

Дело в том, что все функции вырывающиеся через hge работают. Если текстуру, как отдельную переменную объявить(не в классе, а допустим в main),то всё нормально робит. Пробую HGE *hge = new(HGE); , подчёркивает (HGE) и говорит, что Нельзя использовать объект абстрактного класса HGE
Quote (MR_Borg)
goldsphere,
у вас загрузка текстуры объявлена позже создания спрайта, переставьте местами.

Не помогло...


FinderX - Android Аркада

Сообщение отредактировал goldsphere - Воскресенье, 18 Ноября 2012, 11:18
GECKДата: Воскресенье, 18 Ноября 2012, 12:29 | Сообщение # 700
заслуженный участник
Сейчас нет на сайте
goldsphere, а hge у тебя объявлен глобальной переменной? Ну и создается он не через new, а с помощью функции hgeCreate. И само собой что он должен создаваться до использования.

Всё гениальное просто. И хреново работает.
Поиск:

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