|
20.10.2012, 20:08
|
#31
|
Знающий
Регистрация: 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
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Вопрос-Ответ
сделать файл типа type.h, написать туда эту строчку и другие подобные и подключать его где надо.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.10.2012, 04:29
|
#33
|
Знающий
Регистрация: 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
|
Дэвелопер
Регистрация: 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
|
Знающий
Регистрация: 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
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Вопрос-Ответ
можно, но там им не место
|
(Offline)
|
|
21.10.2012, 15:17
|
#37
|
Знающий
Регистрация: 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
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Вопрос-Ответ
судя по коду уже стопудово закостылял.
по текущему коду:
зачем функции extern?
она итак всегда extern если не inline.
почему название неймспейса написано капсом - капосм пишем дефайны или инлайн функции.
где включение pch.h? (оно очевидно должно быть в com.h, но я его там не вижу)
ну и явное задание размера массивов в параметрах и членах класса.
ты знаешь, что ты не сможешь вызвать функцию передавая ей массив другого (даже меньшего) размера?
почитай струструпа. главы 9,23,24.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.10.2012, 20:01
|
#39
|
Знающий
Регистрация: 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)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:30.
|