指针的部分特化,c++
如何对 GList 类进行部分特化,以便可以存储 I (即 I*) 的指针?
template <class I>
struct TIList
{
typedef std::vector <I> Type;
};
template <class I>
class GList
{
private:
typename TIList <I>::Type objects;
};
How to make partial specialization of the class GList so that it is possible to store pointers of I (i.e I*) ?
template <class I>
struct TIList
{
typedef std::vector <I> Type;
};
template <class I>
class GList
{
private:
typename TIList <I>::Type objects;
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无需专门化即可实现这一点。它已经可以存储指针了。
无论如何,如果您想将 GList 专门用于指针,请使用以下语法。
然后就像在任何普通模板中一样使用
I
。在上面的GList
示例中,将使用指针专门化,并且I
将是int
。You don't need to specialise to allow that. It can store pointers already.
Anyway, if you wanted to specialise GList for pointers, use the following syntax.
Then just use
I
as you would in any normal template. In the example above withGList<int*>
, the pointer specialisation would be used, andI
would beint
.上一篇文章指出,您不需要专门研究指针类型,但您可以。
请考虑以下事项:
这不会编译。因为在 Foo::foo 中我们有一个指针,但我们将它用作变量。
如果添加以下内容,它将使用专业化并正常编译:
Previous post states that you don't NEED to specialize for pointer types, but you might.
Consider the following:
This won't compile. Because in Foo::foo we have a pointer yet we use it as variable.
If you add the following, it will use the specialization and compile fine: