我遇到模板类专业化问题,请参阅下面的代码。
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;
}
答案 0 :(得分: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
答案 1 :(得分:1)
你可以,是的,但你的语法不太正确。目前,编译器不知道T
是什么,所以你必须告诉它它是一个模板参数:
template<typename T>
class Container<Point<T> > { };