C ++, проблема специализации шаблонов - PullRequest
1 голос
/ 07 мая 2011

У меня проблемы со специализацией класса шаблона, пожалуйста, смотрите код ниже.

template <typename T>
class Point
{
    private
            T x, y;
            typedef T Type;

    public:

            Point ( const T & x_, const T & y_) : x ( x_ ), y ( y_ ) {}
};

template <typename Item>
struct TItems
{
    typedef std::vector <Item> Type;
};


template <typename Item>
class Container
{
    protected:
            typename TItems <Item>::Type items;

    public:
            typedef Item type;
};   

Можно ли специализировать класс Container для Point?

Обновленный вопрос:

Я попробовал следующий код, он действителен?

template <typename T>
class Container < Point <T>  >
{

};

int _tmain(int argc, _TCHAR* argv[])
{
return 0;

Container <Point <double> > points;
}

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Вы можете, да, но ваш синтаксис не совсем правильный. В его нынешнем виде компилятор не знает, что такое T, поэтому вы должны сказать ему, что это параметр шаблона:

 template<typename T>
 class Container<Point<T> > { };
1 голос
/ 07 мая 2011

да, вы можете специализировать свой класс с этим типом Point <T>.

Edit:

Я попробовал следующий код, это действительный

Если вы попробовали следующий код, не знаете, скомпилирован он или нет? 0_о

int _tmain(int argc, _TCHAR* argv[])
{
Container <Point <double> > points;
return 0; // return should be here nor program will exit before creating Container <Point <double> > points;
}

г

...