반응형


Feedback : smile.k06@gmail.com


그냥 코딩하다가 오류나고 생각나서 끄적끄적..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
template <typename T>
class testClass 
{
    // class 내부함수
public:   
      void testFunc();   
      void testFunc2();
    
    // 생성자, 파괴자
public:
      testClass();
      ~testClass();
};
 
// class 내부함수
void testClass::testFunc() {};   // C2955 에러
            
template <typename T>
void testClass<T>::testFunc2 {};    // 정상 컴파일
 
// 생성자
testClass::testClass();     //C2955 에러
 
template<typename T>
testClass<T>::testClass {};    //정상 컴파일
 
// 파괴자
testClass::~testClass();     //C2955 에러
 
template<typename T>
testClass<T>::~testClass {};    //정상 컴파일
 
 

testClass 를 template 화 시켰다.

비쥬얼 스튜디오에서 클래스 생성기로 클래스를 생성하면 생성자와 파괴자가 cpp파일에 자동 생성.
그러나 헤더파일에서 클래스를 템플릿 시켜주고 컴파일하면 그냥 오류가 남.

이거이가 무슨말이고 한가 해서.. 테스트를 해 보었다.


template 클래스는 컴파일이 됨과 동시에 타입을 생성해낸다. 입력과 동시에 타입생성이 아니라는 것.
외부에 함수를 정의할때 따라서 문제가 생긴다.
외부에 단순히 scope로 함수를 인식하게 해준다면,
컴파일은
"얘 타입 없음"
이라고 오류를 뱉는것임.

따라서 템플릿을 꼭 붙여주도록 해야겠다.

안뇽~





반응형

+ Recent posts