Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 11:06   #1
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию Агрегат в агрегате

Здравствуйте, возникла следующая проблема. Имеется агрегат:
Код:
class zmeyka{
 public:
	 int count;
	 head *h;
	 zveno *zm[150];
	 zmeyka(int icount);
	 virtual ~zmeyka(){};
	 int fill();
	 int eat(char food[]);
	 int draw(int course);
	 int death();
};
И он вложен в другой агрегат:
Код:
class POLE{
  public:
	 POLE();
	 virtual ~POLE(){};
	 zmeyka *zmey;
	 apple *a;
	 wall **w;
	 Tpoint *pole[40][40];
	 int death();
	 int fill();
};
Имеется метод проверки на завершение программы в этом агрегате, использующий первый:
Код:
POLE::death(){
 for (int i=0;i<20;i++)
  if (
      (w[i]->x==zmey->h->x
       &&
       w[i]->y==zmey->h->y
      )
      ||
    (zmey->h->x==60) || (zmey->h->x==450)
    ||
    (zmey->h->y==40) || (zmey->h->y==430)
   )
  {
   w[i]->game_over();
   return 1;break;
  } //else return 0;
 for(i=3;i<zmey->count;i++){
  if (zmey->h->x==zmey->zm[i]->x
      &&
      zmey->h->y==zmey->zm[i]->y
     ){
    return 1; break;
   } else return 0;
 }
}
Но дело в том что при попытке вызова этого метода он вечно возвращает белиберду, а в его переменных *w[i]->x, *zmey->h->x нет нормальных значений, watch например показывает что *zmey->h={ 0 }. Т.е необходимо сравнивать координаты которые этот метод не может взять.
Хотя другие методы(например движение, отрисовка) работают исправно. В чем может быть притчина?

Последний раз редактировалось [MI_nor]; 16.12.2009 в 11:10.
[MI_nor] вне форума Ответить с цитированием
Старый 16.12.2009, 11:27   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Агрегат в агрегате
это типо объект класса в другом классе?..
PS. Сильно мало кода чтобы понять где именно ошибка.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 16.12.2009, 12:55   #3
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию

Типо да =)
Ошибку нашел, как всегда туплю в мелочах)
[MI_nor] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц