Current time: 20.04.2024, 20:39 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
С++, общая тема
Author Message
packa Offline

Posts: 1210
Post: #376

Quote:Так и не понял, где в твоём коде "разбиение классов по файлам". File1 - это всё, что ли? Ну да ладно.
Не, File1 - это самая первая проба, для теста сделал простейщий класс и выводил его в Unit1.cpp. все получилось! (извини что не написал, но выше я же юнит2 указывал Sm )
И я пошел дальше, стал выделять в другой файл очень мощный класс - класс патронов. (unit2.cpp\ unit2.h)
почти получилось - но встал вопрос с вектором объектов этого самого класса.
При желании, наверное, можно избежать использования вектора объектов Ammo_First в каком нибудь из файлов, но не всю же жизнь избегать) Избегать не нужно, нужно знать! 166

Объявляю вектор в Unit1.срр в строках 128 129, в Unit2.cpp в самом начале, (вектор используется только в методе Boom_ammo)


P.S. Если отдельно создавать *h и *cpp в С++ builder, то как их связать потом? Именно в среде билдера - по стандарту когда жмешь на срр, внизу есть вкладка срр\h где можно быстро переходить туда сюда (вот с File1 так не получилось, а с Unit2 норм)
Но это не очень важно, так, ерунда.


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
21.08.2012 13:30
Find all posts by this user Quote this message in a reply
GrayFace Offline
Forum Moderators

Posts: 1233
Post: #377

(04.07.2012 19:44)Efrit Wrote:  5) Все символы, относящие к названию типа, нужно писать слитно. В строке vector <Enemy> у тебя Enemy является частью типа, поэтому пробел ставить не надо. Это же касается и звёздочек в объявлениях указателей.
Как-раз звёздочки - часть имени переменной. Например, int *i, *j.

(04.07.2012 19:44)Efrit Wrote:  3) Почему не стоит обходить вектор через int-переменную, скромно умолчу. Но на всякий случай посоветую почитать про итераторы. Через них всё идёт намного быстрее.
А мне это интересно, весьма удивительная ситуация.

(04.07.2012 19:44)Efrit Wrote:  4) Вместо "голых" указателей лучше использовать shared_ptr<> и создавать всё в стеке, избегая кучи вообще. Хотя тебе ещё далековато до такой техники.
Если всё будет созаваться в стеке, то зачем вдруг shared_ptr? Объясни, что за техника. Хотя всё в стеке создавать в любом случае невозможно.


Вся правда обо мне
27.08.2012 18:52
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6183
Post: #378

Quote:Как-раз звёздочки - часть имени переменной. Например, int *i, *j.
Не, я говорил про то, что Пакка вообще звёздочку как отдельный символ оформляет. Её нужно либо к названию типа цеплять, либо к названию переменной - но уж никак не отдельно.

Quote:А мне это интересно, весьма удивительная ситуация.
Дык быстрее же, чем обращение по номеру. Итераторы и были специально созданы для того, чтобы быстро перебирать элементы. Плюс, если Пакка захочет поменять вектор на лист - то ему код переписывать не придётся.

Quote:Если всё будет создаваться в стеке, то зачем вдруг shared_ptr? Объясни, что за техника. Хотя всё в стеке создавать в любом случае невозможно.
Я имел в виду, что в стеке будут создаваться сами shared_ptr Ab А так они создадутся в стеке, то при выходе из текущего блока будут вызваны их деструкторы - а заодно с ними, и деструкторы "хранимых" ими объектов. Сами-то объекты, разумеется, будут создаваться в куче - но время их жизни будет совпадать со "стековой".

А объекты из кучи, которые должны существовать и после выхода из текущего блока, нужны редко. Мне, кроме графических виджетов, больше ничего на ум не приходит... Но у тех в конструкторе хотя бы всегда есть указатель на виджет-родитель, что гарантирует их уничтожение при уничтожении родителя. А если такой связи нет - то получается утечка памяти.


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
27.08.2012 20:30
Find all posts by this user Quote this message in a reply
GrayFace Offline
Forum Moderators

Posts: 1233
Post: #379

(27.08.2012 20:30)Efrit Wrote:  
Quote:А мне это интересно, весьма удивительная ситуация.
Дык быстрее же, чем обращение по номеру. Итераторы и были специально созданы для того, чтобы быстро перебирать элементы. Плюс, если Пакка захочет поменять вектор на лист - то ему код переписывать не придётся.
Почему же? По идее, если там начинка - массив, то по номеру - прямое обращение к памяти, а итератор - вызов функции. Надо будет посмотреть.


Вся правда обо мне
28.08.2012 19:12
Find all posts by this user Quote this message in a reply
NIKr0m@nceR Offline

Posts: 203
Post: #380

А можно я тут скромно возражу по поводу *? Это извечная тема холиваров и лично мне удобнее использовать синтаксис int * p поскольку в нём есть мнемоническая подсказка: p имеет тип int*, а *p имеет тип int.
Кстати, насчёт того, что итераторы быстрее: если в плане работы программы, то оптимизатор всё равно всё причешет что станет одинаково, а вот с синтаксической точки зрения, писать это реально быстрее.


всё на благо народа
(This post was last modified: 05.04.2013 06:29 by NIKr0m@nceR.)
05.04.2013 06:23
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #381

Здрасте)

Такой вопрос: как заставить программу на с++ выполнять сторонний код?
В частности хочу написать движок игры на scheme, а сама игра(оформление, менюшки и т.д.) будет на с++.

Для примера пускай это будет морской бой: scheme вычисляет куда попал выстрел, хранит какой из кораблей затоплен какой наоборот, знает все координаты и так далее. А с++ все это красиво выводит.

Как вариант придумал такую схему: scheme все вычисления выводит в файл (постоянное его перезаписывая) а с++ берет данные оттуда, после этого снова отправляет запрос на новые вычисления.

Но это решает только половину проблемы, и то через костыль, т.к. когда я прошу открыться прогу на scheme (из с++) всплывает консолька на пару секунд после чего закрывается и все готово!

Какие есть предложения?


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
01.05.2013 00:15
Find all posts by this user Quote this message in a reply
etoprostoya Offline

Posts: 1809
Post: #382

Через DLL - самый очевидный вариант. Пишешь на scheme все нужные функции, компилируешь их в DLL, а потом эти функции вызываешь в своей C-шной программе.
01.05.2013 01:38
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #383

Провел я несколько часов в гугле и пришел к выводу, что шансы сделать DLL на лиспообразном языке стремится к 0 =(


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
01.05.2013 21:07
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #384

я думал о использовании потоков ввода-вывода. но как бы это сделать - хз


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
02.05.2013 13:18
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #385

Меня кое где направили копать здесь
Но я так и не понял смысла этого)
Никаких примеров, скачать нечего, только беглый голый концепт "как это работает"
Может более шарящие люди могут найти в этом ценность) но мне это ничего не дало ((


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
02.05.2013 13:37
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #386

вот что нарыл. человек рассматривает твою проблему http://pubby8.wordpress.com/2012/03/22/scheme-with-c/
побочные ссылки в тему:
http://stackoverflow.com/questions/26107...reter-in-c
http://wiki.call-cc.org/man/4/Embedding


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
02.05.2013 15:34
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #387

Побочные сам находил)

Спасибо, постараюсь перевести статью) но общий смысл ясен.
Это правда не совсем то, что хотелось бы, мне это видится как гугл переводчик с русского на английский.
Простые фразы переводит на ура, а в сложных предложениях косячит.

Вот и здесь думаю что прогу на 70+ строк не скомпилит в Сишный код...
А калькуляторы и прочие умножай-списки получатся.


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
02.05.2013 17:59
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #388

(02.05.2013 17:59)packa Wrote:  Это правда не совсем то, что хотелось бы, мне это видится как гугл переводчик с русского на английский.
...
Вот и здесь думаю что прогу на 70+ строк не скомпилит в Сишный код...
не понял о чём ты.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
02.05.2013 23:35
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #389

Сразу говорю, если скажу сейчас фигню, простите)

Но статью я понял так, что благодаря тем 3 программам, можно "переводить" код из скима, в Си примерно по следующей схеме:
Code:
(define n 5)
(cond
   [(= n 5) (error "error")]
Code:
int n=5;
switch (5) {
case 5: cout << "error";
}
На базовых конструкциях работает на ура!

Но стоит сделать какую нить хитрозакрученную прогу, как "переводчик" выдаст полную фигню.

Может я и ошибаюсь, слишком уж у меня поверхностные знания в этом вопросе...


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
03.05.2013 00:07
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #390

нет, схемный код отдельно, сишный отдельно. к сишной проге подключают интерпретатор схемы и через него общаются вызывают функции на схеме.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
03.05.2013 00:11
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group