永发信息网

c++在模板类中使用list问题

答案:4  悬赏:0  手机版
解决时间 2021-03-10 00:22
我现在看了c++编程艺术,看到写垃圾回收器中,在GCPtr中定义一个静态的list,该list中的成员是GCInfo<T>类型,GCInfo也是一个自定义模板类,代码如下:
template <class T, int size = 0> class GCPtr{
//包含全部指针变量
static list<GCInfo<T> > gclist;
T *addr;
bool isArray;
unsigned arraySize;
static bool first;
。。。。
};
我用的vs2008,现在的问题是,在GCPtr中为什么不能用gclist调用list的方法呢,而如果把gclist定义到一个模板函数中,就可以调用了
template <class T>
void fun(const &T x)
{
list <GCInfo<T> > gclist;
}
我也是按着书上来的,这是什么原因呢
最佳答案
给你一个简化的,能正确编译、链接的修改,楼主对照着看看是不是漏了什么,没有注释:
template<typename T>
class GCInfo{};

template <class T, int size = 0>
struct GCPtr{
static list<GCInfo<T> > gclist;
void Test()
{
gclist.push_back(GCInfo<T>());
}
};
list<GCInfo<int> > GCPtr<int, 1>::gclist;
void TestTheModel()
{
GCPtr<int, 1> t;
t.Test();
}
全部回答
可以调用但需要注意几个问题。 1、静态对象必须在类外初始化。 2、因有在类外初始化的需求,静态对象必须是公有的。 下面看个例子: linklist<int> list2; class A { public: static linklist<int> list; void mod() { list.add(10); } void print() { list.print(); } }; linklist<int> A::list=list2; int main() { A a; a.mod(); a.print(); system("pause"); } 以上例子给你描述的大致差不多,你对照看看你的问题在那。
static list<GCInfo<T> > gclist; 表明gclist是静态成员,所以只有静态成员函数才可以操作gclist 不知道是不是这个原因
给你一个简化的,能正确编译、链接的修改,楼主对照着看看是不是漏了什么,没有注释: template&lt;typename t&gt; class gcinfo{}; template &lt;class t, int size = 0&gt; struct gcptr{ static list&lt;gcinfo&lt;t&gt; &gt; gclist; void test() { gclist.push_back(gcinfo&lt;t&gt;()); } }; list&lt;gcinfo&lt;int&gt; &gt; gcptr&lt;int, 1&gt;::gclist; void testthemodel() { gcptr&lt;int, 1&gt; t; t.test(); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下图为发生在生物体细胞中的一系列生理过程示
10吨是5千克的几倍
云台山让带狗狗进去吗?
台客隆超市兴建路店在哪里啊,我有事要去这个
用一种什么东西在纸上写出来的东西必须通过一
血尿酸7mg/d1表示什么
女的左手断掌纹啥意思
银河奥特曼和维克特利是在哪一集暴露身份
靓馨美发造型地址有知道的么?有点事想过去
当女生对你的兄弟说你对她太好了是什么意思
Dior2016秋冬高级定制的背景音乐是什么
莆田到深圳的快递是不是要先到广州啊?广州是
差旅费属于管理费用吗
新旅馆地址在哪,我要去那里办事
想开一家儿童乐园,现在哪种类型的儿童乐园比
推荐资讯
家里越层 需要无线路由器再接一个无线路由器
连词成句;going,I,to,am,some,trees,plees,g
订婚说什么
qq群怎么转让?为什么选择不了接受者?总是说
头上为什么长猴子并且有一堆
诺克怎么打艾克
请问肠粘连会致死吗?如果平常多注意的话 是
香港怎么做现货白银?
路由器IP地址修改后。路由器在恢复出厂设置后
听书那些软件好!懒人听书怎么不清晰啊音质不
商标权的价值特征包括哪些
向喜欢的男生表白之后他说太突然不知道应该说
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?