STL源码解析中有这样的一段代码:------------------------------------------------------------------------------------#include <iostream>using std::cout;using std::endl;struct B {};struct D1:public B{};struct D2:public D1{};template <class I>func(I& p, B){ cout<< "B version "<<endl; }template <class I>func(I& p, D2){ cout<< "D2 version "<<endl; }template <class I>func(I& p, D1){ cout<< "D1 version "<<endl; }int main(){int *p;func(p, B());func(p, D1());func(p, D2());return 0;}可是用VS 2008 和 G++编译都出问题,都说D1,D2和B的作为func的形参不合法。报错:g++ 报错:testTag.cpp:11:13: 错误:ISO C++ 不允许声明无类型的‘func’testTag.cpp:15:14: 错误:ISO C++ 不允许声明无类型的‘func’testTag.cpp:19:14: 错误:ISO C++ 不允许声明无类型的‘func’VS 2008报错:1>d:\workspaces\vs 2008\projects\practicekaa\practicekaa\tagtest.h(22) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int--------------------------------------------------------------------------------------为什么不行呢?
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消