VC2005报告的template编译错误.....faint!

昨天做基于策略的资源管理的时候碰到一个恶心的问题----编译错误. 这年头,编译错误能难倒人的还真不多见.不过越来越仗着编译器的功能强大,而不注意留心写代码时候的细心(尤其是改代码的时候)终究让我遭到了报应.
当时的代码如下:

 template <typename ResType> class TSimpleResCreator
{
public:
ResType* newInstance()
{
return ResType::newInstance();//ResType;
}

void deleteInstance(ResType* pRes)
{
ResType::deleteInstance(pRes);
}
};

template <typename ResType , typename _TCreator = TSimpleResCreator<ResType> >
class TBaseResMgr : public _TCreator , public IResManager
{

}; //出错的提示行

这样的代码虽然我的模板水平不是很高。但是还不至于写错的。但是我代码是在以前的基础上改的。改完了以后怎么编译都通不过。编译器提示
TBaseResMgr的模板参数太多。。。。错误行是发生上面代码注明的那个地方。同样的代码拷贝到另外一个工程里却是好的。 让我郁闷坏了。 很少见过那一行出错的。。。
后来仔细检查了一下。最终发现这个类前面还定义了几个其他类。而其他类前面有TBaseResMgr的forward declaration....我给
TBaseResMgr类加了策略。做了改动。却没改 forward declaration 。。。。
原来的forward declaration是这样的:
template <typename ResType > class TBaseResMgr
后来改成这样就OK了。
template <typename ResType , typename _TCreator = TSimpleResCreator<ResType> >
class TBaseResMgr


很是不了解,为什么VC2005要把错误行号报告在那一行。哪怕是把错误行号指向类的定义那一行也好。很是不解。不过错还是在自己。所以下面:
反思:
 改代码一定要细心。copy paste代码是万恶之源更要千万小心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值