1

我在模板类专业化方面遇到问题,请参阅下面的代码。

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;
};   

是否可以为 Point 专门化 Container 类?

更新的问题:

我尝试了以下代码,它有效吗?

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

};

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

Container <Point <double> > points;
}
4

2 回答 2

1

是的,您可以使用该类型专门化您的课程Point <T>

编辑:

我尝试了以下代码,它有效吗?

如果你试过下面的代码,你不知道它是否编译了吗?0_o

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;
}

r

于 2011-05-06T20:55:18.830 回答
1

你可以,是的,但你的语法不太正确。就目前而言,编译器不知道是什么T,所以你必须告诉它它是一个模板参数:

 template<typename T>
 class Container<Point<T> > { };
于 2011-05-06T20:59:07.797 回答