목록분류 전체보기 (20)
물에 사는 벌레
C#의 델리게이트를 활용한 콜백은 활용도가 높고 편리해서 굉장히 많이 사용했는데, C++에는 이러한 델리게이트를 지원하지 않는 듯하다. 그나마 있는 함수 포인터는 멤버 함수를 담기에는 제약이 많아 유연성이 떨어져 못 써먹겠어 검색해 보니 functional.h 에 정의되어 있는 function 타입을 bind함수를 통해 지정한 함수와 일대일 대응하게 할 수 있더라. 그러나 C#에 비하면 bind 함수의 사용 또한 매우 귀찮긴 하다. #include using namespace std; class Object { char name[100]; public: Object(const char* name) { strcpy_s(this->name, name); } int f2(int i, int j, int k) ..
* 주의! 더 쉬운 방법이 존재할 수 있으며, 글쓴이도 자기가 무슨 소리를 하는지 모르기 때문에 헛소리 같다 싶으면 걸러 들으셔도 됩니다. * 그냥 shared_ptr 쓰세요! 대략 간단하게 설명하면 힙에 동적으로 생성된 인스턴스의 참조가 끊어지면 그 녀석을 삭제하는 코드입니다. 우선 통짜 코드를 투척 후 대략 어떻게 구혔했는지 서술하겠습니다. 대충 이런 녀석이구나 하고 넘기시면 됩니다. // GarbageCollector.h #pragma once #include #include class GarbageCollecter { private: GarbageCollecter(){} GarbageCollecter(GarbageCollecter& other){} GarbageCollecter operator =..
해당 글은 유니티의 코루틴 사용법과 C#의 IEnumerator 사용법을 알고 있다는 가정하에 작성한 글입니다. 유니티 코루틴을 모르시는 분은 여기 안 오실 테고, C#의 IEnumerator 사용법이 미숙한 분은 IEnumerator 설명 글을 읽고 와 주세요. 우선 유니티와 비슷한 스타일로 만들기 위해 유니티의 코루틴 코드 작성법을 확인해보자. 코루틴 선언은 아래와 같은 방식으로 한다. yield return ... 문을 이용하여 대기할 수도 있다. IEnumerator WaitAndPrint() { // suspend execution for 5 seconds yield return new WaitForSeconds(5); print("WaitAndPrint " + Time.time); } 특이하게..
유니티 스타일의 코루틴 구현하기에 앞서 IEnumerator를 살짝 맛보기로 한다. 이것을 사용하기 전에 먼저 System.Collection 네임스페이스를 사용해야 한다. using System; using System.Collections; 예제로 아주 간단한 열거자 사용을 해 보자. static IEnumerator TestIEnumerator() { Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("3"); yield return null; } static void Main(string[] args) { IEnumerator testIEnumerator = TestIEnumerator(); testIEnumerator.MoveN..