31-2-³ª.ÅÛÇø´ÀÇ À§Ä¡

Ŭ·¡½º ÅÛÇø´ ¼±¾ð¹®Àº ¹Ýµå½Ã »ç¿ëÇϱâ Àü¿¡ ¿Í¾ß ÇÑ´Ù. PosValueTemp ¿¹Á¦¿¡¼­ º¸´Ù½ÃÇÇ main ÇÔ¼öº¸´Ù ÅÛÇø´ ¼±¾ðÀÌ ´õ ¾Õ¿¡ Àִµ¥ ÀÌ ¼ø¼­°¡ ¹Ù²î¸é main¿¡¼­ ÂüÁ¶ÇÏ´Â PosValue<int>, PosValue<char>°¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ¸ð¸£¹Ç·Î ¿¡·¯·Î ó¸®µÉ °ÍÀÌ´Ù. ´Ü, ÅÛÇø´ Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö º»Ã¼ Á¤Àǹ®Àº ¾ÕÂÊ¿¡ ÀÌ¹Ì ¼Ò¼Ó°ú ¿øÇüÀÌ ¼±¾ðµÇ¾î ÀÖÀ¸¹Ç·Î main ÇÔ¼öº¸´Ù µÚ¿¡ À־ »ó°ü¾ø´Ù.

¿¹Á¦ ¼öÁØ¿¡¼­´Â ÇÑ ÆÄÀϾȿ¡ Ŭ·¡½º ¼±¾ð°ú ¸â¹ö ÇÔ¼öÀÇ Á¤ÀÇ, ±×¸®°í ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÏ´Â Å×½ºÆ® ÄÚµå±îÁö ¸ðµÎ °°ÀÌ ÀÛ¼ºÇÏ´Â °ÍÀÌ Æí¸®ÇÏÁö¸¸ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼­´Â Ŭ·¡½ºº°·Î ¸ðµâÀ» ±¸¼ºÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. Ŭ·¡½º ÅÛÇø´ÀÇ °æ¿ìµµ ¸¶Âù°¡Áö·Î º°µµÀÇ ¸ðµâÀ» ÀÛ¼ºÇÒ ¼ö Àִµ¥ À̶§ ÅÛÇø´ ¼±¾ð¹®°ú ¸â¹ö ÇÔ¼öÀÇ Á¤ÀDZîÁö ¸ðµÎ Çì´õ ÆÄÀÏ¿¡ ÀÛ¼ºµÇ¾î¾ß ÇÑ´Ù.

¸â¹ö ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â ÇÔ¼ö ÅÛÇø´Àº ½ÇÁ¦·Î ÇÔ¼öÀÇ º»Ã¼¸¦ ¸¸µå´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ±¸Çö ÆÄÀÏ¿¡ ÀÛ¼ºÇؼ­´Â ¾ÈµÈ´Ù. ¸¸¾à PosValue Ŭ·¡½º ÅÛÇø´Àº PosValue.h¿¡¼­ ¼±¾ðÇÏ°í ÀÌ Å¬·¡½º¿¡ ¼ÓÇÑ ¸â¹ö ÇÔ¼ö¿¡ ´ëÇÑ Á¤ÀÇ´Â PosValue.cpp¿¡ ´ÙÀ½°ú °°ÀÌ µû·Î ÀÛ¼ºÇÑ´Ù°í ÇØ º¸ÀÚ.

 

#include "PosValue.h"

 

template <typename T>

void PosValue<T>::OutValue()

{

     gotoxy(x,y);

     cout << value << endl;

}

 

ÀÌ·¸°Ô µÇ¸é OutValue ÇÔ¼ö´Â PosValue.cpp ¾È¿¡¼­¸¸ ¾Ë·ÁÁö¹Ç·Î ´Ù¸¥ ¸ðµâ¿¡ ÀÖ´Â main ÇÔ¼ö¿¡¼­´Â OutValue°¡ Á¤ÀǵÇÁö ¾ÊÀº °ÍÀ¸·Î ÀÎ½ÄµÇ¾î ¿¡·¯·Î 󸮵ȴÙ. ÀÏ¹Ý ÇÔ¼ö´Â ÄÄÆÄÀϽÿ¡ ¿øÇü¸¸ ¼±¾ðÇϸé ÄÄÆÄÀÏ °¡´ÉÇÏ°í ¸µÅ©ÇÒ ¶§ ¹ÙÀεùµÇ´Âµ¥ ºñÇØ ÅÛÇø´Àº ÄÄÆÄÀÏÇÒ ¶§ ¿Ïº®ÇÏ°Ô ±¸Ã¼È­µÇ¾î¾ß ÇϹǷΠ°°Àº ¹ø¿ª ´ÜÀ§¾È¿¡ ¼±¾ðÀÌ ÀÖ¾î¾ß ÇÑ´Ù. C/C++ ÄÄÆÄÀÏ·¯ÀÇ ¹ø¿ª ´ÜÀ§´Â Cpp ÆÄÀÏ + Æ÷ÇÔµÈ Çì´õ - Á¶°ÇºÎ ÄÄÆÄÀÏ·Î Á¦¿ÜµÈ ºÎºÐÀÌ´Ù.

ÅÛÇø´Àº ¸¸µé°íÀÚ Çϴ Ŭ·¡½º¿Í ¸â¹ö ÇÔ¼öÀÇ ¸ð¾çÀ» ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸®±â¸¸ ÇÒ »ÓÀÌÁö ±× ÀÚü°¡ Äڵ带 »ý¼ºÇÏ´Â °ÍÀº ¾Æ´Ï¸ç µû¶ó¼­ ¿ÜºÎ·Î ¾Ë·ÁÁöÁö ¾Ê´Â´Ù. Ŭ·¡½º ÅÛÇø´Àº Çì´õ ÆÄÀÏ¿¡ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¿øÄ¢ÀûÀÌ¸ç ½ÇÁ¦ Äڵ带 »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ¼³»ç ÀÌ Çì´õ ÆÄÀÏÀ» ¿©·¯ ¸ðµâ¿¡¼­ ÀÎŬ·çµåÇÏ´õ¶óµµ Áߺ¹ Á¤ÀǵǾú´Ù´Â ¿¡·¯°¡ ¹ß»ýÇÏÁö´Â ¾Ê´Â´Ù. ÇÑ ¸ðµâ¿¡¼­ °°Àº À̸§¿¡ ´ëÇØ #defineÀ» µÎ ¹ø ÇÏ¸é ¾ÈµÇÁö¸¸ #define ¹®ÀÌ ÀÖ´Â Çì´õ¸¦ °¢ ¸ðµâ¿¡¼­ ÀÎŬ·çµåÇصµ ¹®Á¦°¡ ¾ÈµÇ´Â °Í°ú °°´Ù.

±×·¯³ª Çì´õ ÆÄÀÏ¿¡ Ŭ·¡½º ÅÛÇø´À» µÎ°Ô µÇ¸é ÃÖÁ¾ »ç¿ëÀÚ¿¡°Ô ÀÌ Å¬·¡½ºÀÇ Äڵ带 ¼û±æ ¼ö ¾ø´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ±â¼úÀûÀ¸·Î Áß¿äÇÑ »çÇ×À» ´ã°í Àִ Ŭ·¡½ºÀÇ ¼Ò½º°¡ ´©ÃâµÉ ¼ö ÀÖ´Â º¸¾È»óÀÇ ¹®Á¦°¡ ÀÖ´Â °ÍÀÌ´Ù. ±×·¡¼­ ÃֽŠC++ Ç¥ÁØÀº cpp ÆÄÀÏ¿¡ Ŭ·¡½º ÅÛÇø´ÀÇ ¸â¹ö ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Â export Å°¿öµå¸¦ µµÀÔÇÏ°í ÀÌ Å°¿öµå¸¦ »ç¿ëÇÏ¸é ±¸Çö ÆÄÀÏ¿¡ Á¤ÀÇµÈ ¸â¹ö ÇÔ¼ö°¡ ¿ÜºÎ·Îµµ ¾Ë·ÁÁöµµ·Ï ÇÑ´Ù. ÅÛÇø´ ¼±¾ð¾Õ¿¡ export¸¦ ºÙÀÌ¸é µÈ´Ù.

 

export template <typename T>

void PosValue<T>::OutValue() { ... }

 

±×·¯³ª ÀÌ Å°¿öµå´Â ¸î¸î ½ÃÇèÀûÀÎ ÄÄÆÄÀÏ·¯µé¸¸ Áö¿øÇÏ°í ÀÖÀ» »ÓÀÌ¸ç ºñÁÖ¾ó C++, gcc¸¦ Æ÷ÇÔÇÑ ´ëºÎºÐÀÇ ÄÄÆÄÀÏ·¯¿¡¼­ ¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê´Â´Ù. Ç¥ÁØÀ¸·Î äÅõǾúÀ½¿¡µµ ºÒ±¸ÇÏ°í Áö¿øÇÏÁö ¸øÇÏ´Â ÄÄÆÄÀÏ·¯°¡ ¸¹Àº ÀÌÀ¯´Â ÀÌ Å°¿öµå°¡ ÀüÅëÀûÀÎ ¸ðµâ ºÐÇÒ ¹æ½ÄÀÇ ÄÄÆÄÀÏ·¯¿Í´Â Àß ¸ÂÁö ¾Ê±â ¶§¹®ÀÌ´Ù. C/C++ ÄÄÆÄÀÏ·¯´Â ¹ø¿ª ´ÜÀ§º°·Î ÄÄÆÄÀÏÇÏ¿© ¸µÅ©ÇÒ ¶§ ÇÕÄ¡´Â ¹æ½ÄÀ» »ç¿ëÇϴµ¥ export·Î ÁöÁ¤µÈ ÇÔ¼ö¿¡ ´ëÇؼ­´Â ¸ðµç ¹ø¿ª ´ÜÀ§¿¡ ´ëÇؼ­µµ ±× Á¤ÀǸ¦ ¾Ë·Á¾ß ÇϹǷΠ±Ùº»ÀûÀÎ ÄÄÆÄÀÏ ¹æ½ÄÀ» ¹Ù²Ù±â Àü¿¡´Â Áö¿øÇϱⰡ ´ë´ÜÈ÷ ¾î·Æ´Ù. ¾ÈŸ±õ°Ôµµ ÀÌ Å°¿öµå´Â ´çºÐ°£Àº ¾µ ¼ö ¾øÀ¸¸ç ±×·¡¼­ ÅÛÇø´ ¶óÀ̺귯¸®µéÀº °ÅÀÇ ´ëºÎºÐ ¼Ò½º°¡ °ø°³µÇ¾î ÀÖ´Ù.