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的形參不合法。報(bào)錯(cuò):g++ 報(bào)錯(cuò):testTag.cpp:11:13: 錯(cuò)誤:ISO C++ 不允許聲明無類型的‘func’testTag.cpp:15:14: 錯(cuò)誤:ISO C++ 不允許聲明無類型的‘func’testTag.cpp:19:14: 錯(cuò)誤:ISO C++ 不允許聲明無類型的‘func’VS 2008報(bào)錯(cuò):1>d:\workspaces\vs 2008\projects\practicekaa\practicekaa\tagtest.h(22) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認(rèn) int--------------------------------------------------------------------------------------為什么不行呢?
- 2 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)
0/150
提交
取消