gl5_progのメモ

自分のためのメモとかまとめとか

クラス外での定義方法まとめ

内部クラス

宣言

class A
{
public:
    class AA;
};

定義

class A::AA
{
public:
};

テンプレートクラスのメンバ関数

宣言

template< typename T >
class A
{
public:
    void Func( void );
};

定義

template< typename T >
void A<T>::Func( void ){}

テンプレートクラスのテンプレートメンバ関数

宣言

template< typename T >
class A
{
public:
    template< typename U >
    void Func( const U& value );
};

定義

template< typename T >
template< typename U >
void A<T>::Func( const U& value ){}

テンプレートクラスの内部テンプレートクラスのテンプレートメンバ関数

宣言

template< typename T >
class A
{
public:
    template< typename U >
    class AA
    {
    public:
        template< typename V >
        void Func( const V& value );
    };
};

定義

template< typename T >
template< typename U >
template< typename V >
void A<T>::AA<U>::Func( const U& value ){}

おまけサンプルコード http://ideone.com/LrQPh4