2010-12-09 2 views
2

아래 코드에서 컴파일 오류가 발생합니다.회원 기능 템플릿 오류

class A 
{ 
public: 
    A() 
    { 
    } 
    ~A() 
    { 
    } 
void func() 
{ 
    cout <<"Ha ha ha \n"; 
} 

}; 

class C 
{ 
public: 
    C() 
    { 
    } 
    ~C() 
    { 
    } 
template<typename type> func() 
{ 
    type t; 
    t.func(); 
} 
void callme() 
{ 
    func<A>(); 
} 
}; 
+0

오류가 무엇을 callme()

void callme() { A a; a.func(); } 

를 다시 작성하거나 사용 : 당신은 실제로 몇 가지 솔루션을 가지고? – Naveen

+0

오류 C2275 : 'A':이 형식을 표현식으로 잘못 사용했습니다. – Satbir

+0

'callme() '을 어떻게 호출합니까? – Kleist

답변

3

VC6이 멤버 함수 템플릿을 지원하지 않습니다.

이동 func() 클래스 정의

template<typename type> void func() 
{ 
    type t; 
    t.func(); 
} 

또는 중 클래스 템플릿

class C 
{ 
public: 
    template<class T> struct func 
    { 
     void operator()() 
     { 
     T t; 
     t.func(); 
     } 
    }; 

    void callme() 
    { 
     func<A>()(); 
    } 
}; 
3

func<T>()의 정의는 C++에서 무효의 반환 유형을 지정하지 않습니다.

이 있어야한다 :

template<typename type> void func() 
{ 
    type t; 
    t.func(); 
} 
+0

그러나 실제 문제는 아닙니다. – Satbir

+0

@sat, g ++은 반환 형식을 추가하면 오류없이 코드를 컴파일합니다. Visual Studio 컴파일러에서 여전히 동일한 오류가 발생합니까? –

+0

나는 오래된 VC6 컴파일러에서 일하고있다 ... 이것은 VC6가 범인이라는 것을 의미한다. 당신의 즉각적인 대답을 많이 고맙다. – Satbir