为什么这段程序在 VC6.0 没问题, 在 VC7.1 不过???
为什么这段程序在 VC6.0 没问题, 在 VC7.1 不过???
下面这段程序为什么在 VC6.0 下面编译可以通过, 在 VC 7.1
下面就无法通过?
编译的输出为:
warning C4346: “qtClass1<qT1>::qtClass1<qT1>::qT2::qjT1” : 依赖名称不是类型
error C2146: 语法错误 : 缺少“;”(在标识符“qjT1”的前面)
error C2501: “qtClass1<qT1>::qjT1” : 缺少存储类或类型说明符
源代码:
class CObject
{
};
template <class TCallback>
class qtBase
{
public:
typedef TCallback qjT1;
protected:
CObject* m_target;
// a callback
qjT1 m_cb;
};
class qtClass : public qtBase<void (CObject::*)()>
{
public:
int a;
};
template <class qT1>
class qtClass1
{
public:
typedef qT1 qT2;
typedef qT2::qjT1 qjT1;
};
void main()
{
qtClass1<qtClass> qttt;
}