{"id":171,"date":"2014-06-05T19:27:01","date_gmt":"2014-06-05T10:27:01","guid":{"rendered":"http:\/\/csharp.ihavenomoney.co.kr\/?p=171"},"modified":"2014-06-05T19:27:01","modified_gmt":"2014-06-05T10:27:01","slug":"runtime_classcalpha","status":"publish","type":"post","link":"https:\/\/csharp.ihavenomoney.co.kr\/?p=171","title":{"rendered":"RUNTIME_CLASS(CAlpha)"},"content":{"rendered":"<pre id=\"code_snippet_39\" style=\"position:relative;width:100%;border:0;padding:0;\">#include &quot;stdafx.h&quot;\r\n#define DEBUG\r\n#define RUNTIME_CLASS(class_name) (&amp;class_name::class##class_name)\r\n\r\nclass CObject;\r\n\r\n\/\/struct CRunTimeClass\r\nstruct CRuntimeClass{\r\n    char m_lpszClassName[21];\r\n\tint m_nObjectSize;\r\n\tCObject* (*pfnCreateObject)(); \/\/\ud568\uc218\ud3ec\uc778\ud2b8\r\n\r\n\tCObject* CreateObject();\r\n};\r\n\r\nCObject* CRuntimeClass::CreateObject(){\r\n\treturn (*pfnCreateObject)();\r\n}\r\n\r\nclass CObject {\r\npublic:\r\n\tstatic CRuntimeClass classCObject;\r\n\tvirtual CRuntimeClass* GetRuntimeClass()  const { return NULL;}\r\n\tvirtual ~CObject(){}\r\nprotected:\r\n\tCObject() {printf(&quot;CObject constructor\\n&quot;);}\r\n};\r\n\r\nCRuntimeClass CObject::classCObject={&quot;CObject&quot;,sizeof(CObject),NULL};\r\n\r\n\/\/class CAlpha\r\nclass CAlpha : public CObject\r\n{\r\npublic:\r\n\tstatic CRuntimeClass classCAlpha;\r\n\tstatic CObject* CreateObject();\r\n\tvirtual CRuntimeClass* GetRuntimeClass() const{\r\n\t\treturn &amp;classCAlpha;\r\n\t}\r\nprotected:\r\n\tCAlpha() {printf(&quot;CAlpha constructor\\n&quot;);\r\n\t};\r\n};\r\n\r\nCRuntimeClass CAlpha::classCAlpha={&quot;CAlpha&quot;,sizeof(CAlpha),CAlpha::CreateObject};\r\n\r\nCObject* CAlpha::CreateObject(){\r\n\treturn new CAlpha;\r\n}\r\n\r\nvoid main()\r\n{\r\n\t\/\/Create CAlpha\r\n\t\/\/CRuntimeClass* pRTCAlpha=RUNTIME_CLASS(CAlpha);\r\n\tCRuntimeClass* pRTCAlpha=(&amp;CAlpha::classCAlpha);\r\n\tCObject* pObj1;\r\n\r\n\tpObj1=pRTCAlpha-&gt;CreateObject();\r\n\t\/\/CAlpha\uc758 &amp;OnCreate()\uac00 \ub300\uc785(\ud568\uc218\ud3ec\uc778\ud130\uc5d0 \uc758\ud574)\r\n\tprintf(&quot;CAlpha class=%s\\n&quot;,pObj1-&gt;GetRuntimeClass()-&gt;m_lpszClassName);\r\n\r\n\tdelete pObj1;\r\n\r\n#ifdef DEBUG\r\n\t\/\/cmd\r\n\tchar e;\r\n\tscanf(&quot;%c&quot;,&amp;e);\r\n#endif\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-171","post","type-post","status-publish","format-standard","hentry","category-c"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=171"}],"version-history":[{"count":1,"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":172,"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions\/172"}],"wp:attachment":[{"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/csharp.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}