편집 기록

편집 기록
  • 프로필 유동욱님의 편집
    날짜2018.07.28

    부모클래스의 static 변수 정의 질문입니다!


    template <typename T>
    class Singleton
    {
    protected:
        Singleton() {}
        Singleton(const Singleton& single) {}
        ~Singleton() {}
    
    protected:
        static T*   m_pInst;
    
    public:
        static T* GetInst()
        {
            if (!m_pInst)
                m_pInst = new T;
            return m_pInst;
        }
        static void DesInst()
        {
            if (m_pInst)
                delete m_pInst;
            m_pInst = NULL;
        }
    };
    
    template <typename T>
    T* Singleton<T>::m_pInst = NULL;
    

    템플릿으로 하면 선언되는 자료형 T 에 따라 static 변수가 여러개 생길줄알았는데 자식클래스에서 static 변수를 정의하려니 오류가 생기네요..

    template <typename T>
    T* Singleton<T>::m_pInst = NULL;
    

    이런식으로 작성했을때 오류가 안났는데 맞는 방법일까요? 어떻게 저런방식이 허용되는지 궁금합니다

  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.07.28

    부모클래스의 static 변수 정의 질문입니다!


    template <typename T>
    class Singleton
    {
    protected:
        Singleton() {}
        Singleton(const Singleton& single) {}
        ~Singleton() {}
    
    protected:
        static T*   m_pInst;
    
    public:
        static T* GetInst()
        {
            if (!m_pInst)
                m_pInst = new T;
            return m_pInst;
        }
        static void DesInst()
        {
            if (m_pInst)
                delete m_pInst;
            m_pInst = NULL;
        }
    };
    
    template <typename T>
    T* Singleton<T>::m_pInst = NULL;
    

    템플릿으로 하면 선언되는 자료형 T 에 따라 static 변수가 여러개 생길줄알았는데 자식클래스에서 static 변수를 정의하려니 오류가 생기네요.. template T* Singleton::m_pInst = NULL; 이런식으로 작성했을때 오류가 안났는데 맞는 방법일까요? 어떻게 저런방식이 허용되는지 궁금합니다