๊ธ€

๋ผ๋ฒจ์ด Programming์ธ ๊ฒŒ์‹œ๋ฌผ ํ‘œ์‹œ

ํ•จ์ˆ˜ ํฌ์ธํ„ฐ, std::bind, ๋žŒ๋‹ค์‹๊นŒ์ง€..

Babel ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๊ณผ์ •์—์„œ, ๋ฐœ์ƒํ•˜๋Š” Event๋“ค์„ ์ผ๊ด„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ(์ปจํ…Œ์ด๋„ˆ์™€ ๊ด€๋ฆฌ์ž)๋ฅผ  ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋‹ค.  ์˜ˆ๋ฅผ ๋“ค๋ฉด,   - Karma๊ฐ€ ์ผ์ •๋†’์ด์— ๋„๋‹ฌํ–ˆ์„ ์‹œ, ๋ณด์Šค๊ฐ€ ์ž ์‹œ ์ถœํ˜„ํ•ด ๋ฉ”์‹œ์ง€ ๋ช‡๋งˆ๋””๋ฅผ ๋˜์ง€๊ณ  ์‚ฌ๋ผ์ง€๋Š”..  - ์ผ์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ–ˆ์„ ๋•Œ, ํ™”๋ คํ•œ ์ดํŽ™ํŠธ์™€ ํ•จ๊ป˜ ์ˆจ๊ฒจ์ง„ ์•„์ดํ…œ์„ ํš๋“ํ•˜๋Š”.. ๊ณผ ๊ฐ™์€ Plot Event ๋ง์ด๋‹ค.   ๊ตฌํ˜„์„ ์œ„ํ•ด, ์šฐ์„  ์ €์žฅํ•  Event๋ฅผ ์ž๋ฃŒ๋กœ ์ƒ๊ฐํ•  ๋•Œ, ํ•„์š”์กฐ๊ฑด๋“ค์„ ๋ช…ํ™•ํžˆ ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์—, Event๋ž€ ํ•ด๋‹น 2๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ํ”„๋กœ์‹œ์ ธ๋ฅผ ๋งํ•œ๋‹ค.  ์ผ์ •ํ•œ ์ˆœ์„œ(Sequence)๋ฅผ ๊ฐ€์ง€๊ณ , ์—ฐ์†์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ณตํ•ฉ ํ”„๋กœ์‹œ์ ธ  CallBack์˜ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ”„๋กœ์‹œ์ ธ ์œ ์ € ์ž…๋ ฅ์— ๋Œ€ํ•ด, ์ง์ ‘์ด ์•„๋‹Œ ๊ฐ„์ ‘์  ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ชจ๋“  Manage ํ”„๋กœ์‹œ์ ธ๋ฅผ ๋งํ•œ๋‹ค.  ์ข…๋ฅ˜๋Š”, ์•ก์…˜์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ  ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ, ํŒŒ๋ผ๋ฉ”ํ„ฐ ๋ณ€๊ฒฝ ๋“ฑ ๋ชจ๋“  ์กฐ์ž‘์œผ๋กœ ๋А์Šจํ•œ ๋ฒ”์œ„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ,  ๋ฌด์—‡๋ณด๋‹ค ์ผ์ •ํ•œ ์‹œํ€€์Šค์— ์˜ํ•ด Event๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋งค๋‹ˆ์ €๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (+์ฐธ๊ณ ) -  http://carstart.tistory.com/183

l-value ์™€ r-value์— ๋Œ€ํ•˜์—ฌ

http://blog.naver.com/PostView.nhn?blogId=han95173&logNo=220765490854

Cocos2d-x ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ

Objective-C ๊ธฐ๋ฐ˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ชจ๋ธ์ธ Reference Counting https://www.programering.com/a/MTN3cjMwATg.html cocos2d-x์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ž˜ ์ •๋ฆฌ๋œ ๊ธฐ์‚ฌ๋ฅผ ๋ฐœ๊ฒฌ. ์ฐธ๊ณ ์šฉ์œผ๋กœ ๋ฒˆ์—ญ(์˜์—ญ)ํ•ด์„œ ์ •๋ฆฌํ•œ๋‹ค. Object-C ๋กœ๋ถ€ํ„ฐ ์ด์‹ ๋œ cocos2d-x์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š”, ๊ทธ ๋™์•ˆ, Object-C์— ๋Œ€ํ•ด ์ ‘์ ์ด ์—†์—ˆ๋˜ C++ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํฐ ํ˜ผ๋ž€์„ ์•ˆ๊ฒจ์ค๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ์ข‹์€ C++ ํ”„๋กœ์‹œ์ ธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋Š” ์—†๊ธฐ์—,  ์ €๋Š” OC์™€ cocos2d-x ์–‘์ชฝ ๋ชจ๋‘์— ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, cocos2d-x๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„๊นŒ ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ ์ด ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. C++์˜ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š”, '๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ์—๊ฒŒ Release ์›์น™์„ ์ ์šฉํ•˜๋Š”๊ฐ€' ์ฆ‰, 'Object๋ฅผ ์ƒ์„ฑํ•˜๋Š” new ์—ฐ์‚ฐ์ž๋ถ€ํ„ฐ, ์‚ญ์ œํ•˜๋Š” delete ์—ฐ์‚ฐ๊นŒ์ง€, ๋ˆ„๊ฐ€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€ ' ์— ์ฃผ์š” ๋…ผ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.  ๋งŒ์•ฝ function ์•ˆ์—์„œ object์˜ life-cycle์ด ๋ชจ๋‘ ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด, ๊ทธ์ € function์˜ return๋ฌธ ์ง์ „์— ์‚ญ์ œํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.  ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” new๋กœ๋ถ€ํ„ฐ function body ๋ฐ–๊นŒ์ง€์˜ life-cycle์„ ๊ฐ€์ง€๋Š” function์„ ๋งŒ๋“œ๋Š”๋ฐ ๊ทธ๋ ‡์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” Object๋“ค์„ Stack์— ์ง์ ‘ ์ƒ์„ฑํ•จ์œผ๋กœ์จ, Dynamic Memory(Heap)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋ฌผ๋ก , ์Šคํƒ์— ํฐ Object๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์˜ณ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ๋งŒ์•ฝ, function ๋ฐ–์—์„œ life-cycle์„ ๊ฐ€์ง€๋Š” Object๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ Release ์›์น™์„ ์ ์šฉ์‹œ์ผœ์•ผ ํ• ์ง€ ์• ๋งคํ•ด ์งˆ ๊ฒƒ์ด๊ณ , Object๋ฅผ Release ์‹œํ‚ฌ ์ ์ ˆํ•œ (๋‹ค๋ฅธ) ์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ์•ผ๋งŒ ํ•  ๊ฒƒ์ด๋ฉฐ, ๋งŒ์•ฝ ๊ทธ Object๊ฐ€ ๋‹ค์–‘ํ•œ Obj...

C++ ๋™์ ์œผ๋กœ ๊ฐ์ฒด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ๋•Œ, Vector๋ฅผ ์จ์•ผํ• ๊นŒ ๊ทธ๋ƒฅ ๋ฐฐ์—ด์„ ์จ์•ผํ• ๊นŒ?

Static/Dynamic Array? The C++ array classes are better behaved than the low-level C array because they know a lot about themselves, and can answer questions C arrays can't. They are able to clean after themselves. And more importantly, they are usually written using templates and/or inlining, which means that what appears to a lot of code in debug resolves to little or no code produced in release build, meaning no difference with their built-in less safe competition. All in all, it falls on two categories: Dynamic arrays Using a pointer to a malloc-ed/new-ed array will be at best as fast as the std::vector version, and a lot less safe (see  litb's post ). So use a std::vector. Static arrays Using a static array will be at best: as fast as the  std::array  version and a lot less safe. So use a  std::array . Uninitialized memory Sometimes, using a  vector  instead of a raw buffer incurs a visible cost because the  vector  ...

๊ฐ์ฒด๋ฐฐ์—ด (๋™์ /์ •์ )์ดˆ๊ธฐํ™”

class Test { public : Test( int a, int b ); }; ์œ„ ํด๋ž˜์Šค ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฃผ๊ณ  ์‹ถ์€ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ. Test test( 1, 2 );  ์œ„ ์™€ ๊ฐ™์ด ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ  ๋งŒ์•ฝ ์ด ํด๋ž˜์Šค๋ฅผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋™์ ํ• ๋‹น์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. Test test[10];                                      //์—๋Ÿฌ ๋ฐœ์ƒ, ๋””ํด๋“œ ์ƒ์„ฑ์ž ์—†์Œ Test test[2] = { Test( 1, 1 ), Test( 2, 2 ) };    //๊ฐ€๋Šฅ Test* test = new Test[10];                     //์—๋Ÿฌ ๋ฐœ์ƒ, ๋””ํด๋“œ ์ƒ์„ฑ์ž ์—†์Œ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ class Test { public : Test(); Test( int a, int b ); }; Test* test = new Test[10];     10๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธด ํ•˜์ง€๋งŒ Test( int a, int b ) ๋ฅผ ํ˜ธ์ถœ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํ•ด์„œ ๋ฐฐ์—ด ์ˆ˜ ๋งŒํผ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œ์ผœ ์ฃผ์–ด์•ผํ•œ๋‹ค. for ( int i = 0 ; i < 10 ; ++i ) { test[i].Initialize( 10, 10 ); }

Visual Studio์—์„œ Cocos2d-x ์ฝ˜์†”์ฐฝ ๋กœ๊ทธ ๋„์šฐ๊ธฐ

1. win32/main.cpp #pragma comment(linker, "/entry:wWinMainCRTStartup /subsystem:console"); ์ถ”๊ฐ€ํ•œ๋‹ค. 2. ํ”„๋กœ์ ํŠธ ์†์„ฑ -> ๋ง์ปค -> ์‹œ์Šคํ…œ  -> ํ•˜์œ„์‹œ์Šคํ…œ ์ฝ˜์†”(SUBSYSTEM::CONSOLE) ๋กœ ๋ณ€๊ฒฝ

Cocos2d-x / c++ casting์— ๋Œ€ํ•˜์—ฌ..

http://sweeper.egloos.com/m/1907485 ๋ช…์‹œ์  ํƒ€์ž…์บ์ŠคํŒ…์— ๋Œ€ํ•˜์—ฌ..

์ „์—ญ ๋ณ€์ˆ˜/ํ•จ์ˆ˜ ๊ด€๋ฆฌ์— ๊ด€ํ•œ ์ฐธ๊ณ 

[C++ ์ •๋ฆฌ] ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜ ๋ฐ ํ˜ธ์ถœ ์œ ํ˜• c,c++ ํ—ค๋” ํŒŒ์ผ์— ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๊ธฐ ์ „์—ญ(global)๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ extern์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ