Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 20.10.2012, 20:08   #31
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопрос-Ответ

ух ты) спасибо)
еще вопрос: а с "typedef unsigned short int usi;", который почти в каждом файле нужен, что делать?

Сообщение от Den Посмотреть сообщение
глобальные переменные зло, переработай архитектуру пока не поздно
ну камера у меня глобальная переменная, дефолтная текстура, обьект фастимейджа, и еще парочка
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 20.10.2012, 20:13   #32
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Вопрос-Ответ

сделать файл типа type.h, написать туда эту строчку и другие подобные и подключать его где надо.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (20.10.2012)
Старый 21.10.2012, 04:29   #33
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопрос-Ответ

есть две переменные в юнит.hpp:
extern cUnit * PLAYER1, PLAYER2;
в юнит.срр пишу:
cUnit * PLAYER1 = 0;
cUnit * PLAYER2 = 0;

итог:e:\datar\inc\unit.cpp(249) : error C2040: PLAYER2: "cUnit *" отличается по уровням косвенного обращения от "cUnit"
еще не все...
в конструкторе: if (!(_stricmp(unit_name, "player1"))){is_player = true; PLAYER1 = this;}
итог: error C2679: бинарный '=': не найден оператор, принимающий правый операнд типа 'cUnit *const ' (или приемлемое преобразование отсутствует)
что за печаль такая(((
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 21.10.2012, 11:04   #34
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Вопрос-Ответ

есть две переменные в юнит.hpp:
extern cUnit * PLAYER1, PLAYER2;
в юнит.hpp только объявление класса Юнит
в юнит.срр пишу:
cUnit * PLAYER1 = 0;
cUnit * PLAYER2 = 0;
аналогично в юнит.срр только реализация конструктора, деструктора и методов класса Юнит

нахер ты там эти переменные создал?
(Offline)
 
Ответить с цитированием
Старый 21.10.2012, 13:33   #35
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопрос-Ответ

обьявил и определил игроков в самом конце файлов и работает)
может
проект еще в незапускаемом состоянии)

и еще: почему нельзя создавать там переменные?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 21.10.2012, 13:39   #36
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Вопрос-Ответ

можно, но там им не место
(Offline)
 
Ответить с цитированием
Старый 21.10.2012, 15:17   #37
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопрос-Ответ

ура! запускается! но до конца еще есть куда пилять
вот заинклюдил как обычно очередной хедер/срр-шник, и вот: компилер упорно не хочет распознавать стд::вектор как тип, даже если пишу class std::vector; using namespace std;
подкинь какую-нить статью/книжечку где в кратце рассказывается о такой структуре проектов, или напиши что и как, а то еще всю программу закостыляю нафиг, если еще не закостылял
блин
(

если точнее:
хедер:
#ifndef _LOCALE_HPP
#define _LOCALE_HPP

#include <com.hpp>//глобальные переменные и т п

namespace LOCALE{
	extern char * Get(char part_name[32], char id[64]); 
	extern void ChangeLanguage(char lang[]);

	extern void ChangeCurPart(char part_name[32]);
	extern char cur_part_name[32];

	class loc_part{
	public:
		~loc_part();
		char name[32];
		class cText{
		public:
			char id[64];
			char data[1024];
		};
		vector<cText *> text;
	};
	extern vector<loc_part *> part;
};

#endif
срр:
#include <pch.h>

#include <locale.hpp>

vector<LOCALE::loc_part *> LOCALE::part; //<--------------ругается на это(((
............
pch.h
#ifndef PCH_H
#define PCH_H

.............
#include <vector>
.........

#endif
com.hpp:
#ifndef _COM_HPP
#define _COM_HPP

.............

using namespace std;
.............

#endif
еще говорит что error C2653: LOCALE: не является именем класса или пространства имен О_О Какого фига?!?

UPD:: да фиг с этим всем, если надо то могу дать ВЕСЬ исходный код
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 21.10.2012, 16:04   #38
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Вопрос-Ответ

судя по коду уже стопудово закостылял.

по текущему коду:
зачем функции extern?
она итак всегда extern если не inline.

почему название неймспейса написано капсом - капосм пишем дефайны или инлайн функции.

где включение pch.h? (оно очевидно должно быть в com.h, но я его там не вижу)
ну и явное задание размера массивов в параметрах и членах класса.
ты знаешь, что ты не сможешь вызвать функцию передавая ей массив другого (даже меньшего) размера?

почитай струструпа. главы 9,23,24.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (22.10.2012)
Старый 23.10.2012, 20:01   #39
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопрос-Ответ

спасибо, почитал )
на счет проблемы: сделал вместо #include <locale.hpp> #include "locale.hpp" и все пошло как надо О_О
но есть еще в Локали функция: char * _(char id[64], char * text);
так вот, главный срр не хочет распознавать ни неймспейса Локали, ни функции
когда я повторно обьявляю эту функцию в главном срр, компилер просит 'libboost_locale-vc90-mt-gd-1_50.lib'
блин
и что делать? (буст использует луабинд)

UPD: Убрал нафиг вообще эту функцию, всеравно либу буста просит

UPD: Оййой) Поменял название хедера локали и все заработало) Надо бы убрать папку буста из списка каталогов студии))) Вопрос удачно закрыт)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:32.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com