2016-08-16 3 views
0

그래서 my_class라는 템플릿 클래스를 선언하고이 클래스를 다른 파일 "main.cpp"에서 사용합니다.오류 : 알 수없는 유형 이름 "my_class"

내 main.cpp에 "my_class.h"가 포함되어 있는데 알 수없는 유형 이름 오류가 발생했습니다.

// "my_class.h" 
#ifndef TYPE_H_DEFINE 
#define TYPE_H_DEFINE 

#include <vector> 
#include <algorithm> 

namespace wtvr { 

template<class T> 
class my_class { 
public: 
    void add(const T&); 
    const T& get(); 
private: 
    std::vector<T> my_class_vec; 
}; 

template<class T> 
void my_class<T>::add(const T& obj) { 
    my_class_vec.push_back(obj); 
} 

template<class T> 
const T& my_class<T>::get() { 
    std::random_shuffle(my_class_vec.begin(), my_class_vec.end()); 
    return my_class_vec[0]; 
} 
} 

#endif 
+3

위 코드는 나에게 잘 어울립니다. 문제는 표시되지 않은 코드의 어딘가에 있어야합니다. –

+2

코드를 게시해야합니다. 당신이 뭘 잘못하고 있는지 우리가 알기 위해서 어떻게 생각하세요? – Barmar

+0

괜찮아요 –

답변

1

그것은 까다로운 하나 : 여기

은 일부 코드입니다!

내이

#ifndef TYPE_H_DEFINE 
#define TYPE_H_DEFINE 

이미 나는 다른 이름으로 변경 ++ 라이브러리 표준 C에 의해 사용되었다가, 의심 할 여지가 비얀 스트로브 스트 룹이 매크로를 미워하지 왜 가드 이름을 포함하는 것이 밝혀졌습니다! 모두 감사합니다!

+0

'#pragma once'를 사용하는 것을 피할 수 있습니다 만, 이것은 표준이 아닌 대부분의 컴파일러가 지원합니다. –

+0

@ Torbjörn 그리고 그들이하지 않을 때 그것은 정말로 짜증납니다. 컴파일러는 지원하지 않는'#pragma '를 자동으로 버릴 수 있습니다. – user4581301

+0

@ Torbjörn #pragma를 한 번 사용할 수 있지만 실제로는 가드를 사용하고 싶습니다. –