|
06.07.2012, 22:23
|
#16
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ
Реально ли запилить нечто, имитирующее GOTO? (нужно для транслятора кода, т.е. убогость реализации не важна)
Через ассемблерные вставки, например (на месте goto вызывать jmp, а как узнать адрес куда нужно идти - не представляю)
Компилятор - tcc.
|
(Offline)
|
|
06.07.2012, 22:39
|
#17
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Вопрос-Ответ
goto есть в Си. Но если для парсера, то работа с указателями решает: указатели на переменные (в т.ч. массивы) и функции - что ещё надо?
Или поподробней.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.07.2012, 22:46
|
#18
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ
Упс, не знал.
|
(Offline)
|
|
17.10.2012, 02:04
|
#19
|
ПроЭктировщик
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: Вопрос-Ответ
Есть ли справка для С++ подобная той, какая в Blitz3D? Ну всмысле с разбивкой функций по разделам, описанием ф-ций, а так-же примерами.
|
(Offline)
|
|
17.10.2012, 02:18
|
#20
|
|
Ответ: Вопрос-Ответ
Сообщение от Crayzi
Есть ли справка для С++ подобная той, какая в Blitz3D? Ну всмысле с разбивкой функций по разделам, описанием ф-ций, а так-же примерами.
|
http://www.cplusplus.com/
|
|
|
19.10.2012, 23:01
|
#21
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопрос-Ответ
привет.
есть обявление класса эфффекта
после есть обьявление класса юнита
проблема в том, что эффект должен хранить у себя сылку на экземпляр юнита и юнит должен хранить ссылку на эффект
как-то так
как они могут узнать друг-друга? и каким образом?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
19.10.2012, 23:05
|
#22
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Вопрос-Ответ
Effect *fx;
Unit *un;
...
fx = new Effect(...);
un = new Unit(...);
fx->setUnit(un);
un->setEffect(fx);
...
delete fx;
delete un;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.10.2012, 23:17
|
#23
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопрос-Ответ
зашибись, это то что надо, но как это сделать?
ведь когда эффект обьявляется перед юнитом то он не может хранить данные о юните, ибо о существовании такого типа эффекту пока ничего не известно
делаю так:
#include <effect_int.h> //интерфейс класса
#include <unit_int.h>
#include <effect.h> //определение класса
#include <unit.h>
как еще можно сделать?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
19.10.2012, 23:29
|
#24
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Вопрос-Ответ
объявления классов сначала, потом их реализация:
Unit.hpp
#include "Effect.hpp"
class Unit
{
public:
void f(int x);
protected:
private:
Effect *fx;
};
-----------------------------------
Unit.cpp
#include "Unit.hpp"
void Unit::f(int x)
{
...
}
-----------------------------------
где-то в main.cpp
#include "Unit.hpp"
#include "Effect.hpp"
...
Effect *fx;
Unit *un;
...
fx = new Effect(...);
un = new Unit(...);
fx->setUnit(un);
un->setEffect(fx);
...
delete fx;
delete un;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2012, 00:06
|
#25
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопрос-Ответ
ругается на переопределение классов(
извиняюсь, привык тупо последовательно инклюдить в главный срр хедеры в которых и описание и определение, а как работать с срр-шниками я без понятия
пока получается та же зависимость от последовательности как и раньше
так как же дать знать юниту о эффекте и эффекту о юните?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
20.10.2012, 00:41
|
#26
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Вопрос-Ответ
ох я тебе не всё написал)
см вложения, там полная версия)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2012, 00:54
|
#27
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопрос-Ответ
О БОЖЕ! Работает! Впервые вижу запись типа: "class Effect;", но ОНО работает! С_П_А_С_И_Б_О!
ПС: Бл%№ь, теперь требуется полная переработка проекта
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
20.10.2012, 19:41
|
#28
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопрос-Ответ
Блин, оказалось что у меня куча глобальных переменных, которые блин, используются в многих местах
как теперь быть?
например char buffer[2048]; стыреный из сэмплов ксорса - в каждом хедере его добавлять? ну а другие переменные, которые должны быть уникальными - что с ними делать?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
20.10.2012, 19:43
|
#29
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Вопрос-Ответ
1) переписать все к чертям
2) сделать файл globals.h в котором будут
extern int g_my_global_int
globlas.cpp в котором будут
int g_my_global_int = 0;
во всех cpp-шках включать globals.h
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2012, 19:58
|
#30
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Вопрос-Ответ
глобальные переменные зло, переработай архитектуру пока не поздно
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:57.
|