Point function
typedef void (*Pf)();
PF edit_ops[] = {&cup, &paste, ©, &search};
PF file_ops[] = {&open, &append, &close, &write};
PF* button2 = edit_ops;
PF* button3 = file_ops;
button2[2]();
typedef void (*Pf)();
PF edit_ops[] = {&cup, &paste, ©, &search};
PF file_ops[] = {&open, &append, &close, &write};
PF* button2 = edit_ops;
PF* button3 = file_ops;
button2[2]();
STL(Standarad Template Library)
Template 기법을 이용해 만들어진 표준화된 library라고 볼 수 있습니다. 자료구조론을 공부하다보면 배우게 되는 queue, list, hashmap, vector 등과 같은 container와 sort collection, generic 알고리즘과 같은 algorithim이 있고, string을 통한 문자열 접근, exception handling, auto_ptr의 스마트 포이터 등의 기능들을 표준화해 놓은 것입니다. 대부분의 C++ Compiler는 이 STL을 지원하고 있으면, 이는 linux, unix, windows, macos 등 플랫폼에 상관없이 지원되고 있습니다.
[wikipedia] Standard Template Library
[codeproject] An Introductory STL tutorial
ATL(Active Template Library)
COM(Component Obejct Model)을 C++에서 구현하는데 좀더 쉽게 하기 위해 template을 이용해서 만든 일종의 wrapper library입니다.
[wikipedia] Active Template Library
[wikipedia] Component Object Model
WTL(Windows Template Library)
GUI를 구성하기 위한 library를 template 기법을 이용하여 가볍고 쓰기 쉽게 만든 것입니다. 달리 얘기하면, WTL은 MFC(Microsoft Foundation Class Library)보다 가벼우면서 쉽게 GUI를 작성하기 위해 ATL을 이용하여 만든 library입니다. 쉽게 말해 ATL의 확장이라고 할수 있습니다.
[wikipedia] Windows Template Library
[codeproject] WTL for MFC Programmers, Part I – ATL GUI Classes
[wikipedia] Microsoft Foundation Class Library
MSDN에는 이것에 대해 다음과 같이 설명되어 있다.
__declspec(property(get=get_func_name)) declarator __declspec(property(put=put_func_name)) declarator __declspec(property(get=get_func_name, put=put_func_name)) declarator
// 예제
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
class CTest
{
private:
char* m_szName;
public:
CTest(){ m_szName = strdup("");}
CTest(const char* szName){ m_szName = strdup(szName);}
~CTest(){ free(m_szName); }
__declspec(property(get=GetName, put=PutName)) char* Name;
void PutName(const char* szName)
{
free(m_szName);
m_szName = strdup(szName);
}
const char* GetName() const
{
return m_szName;
}
};
int main(void)
{
CTest test;
test.Name = "hello";
printf("%s\n", test.Name);
}