C++问题:关于模版,有点小复杂模版的使用

Timor君 发布于 2012/06/05 23:26
阅读 242
收藏 0
#include <iostream>
#include <vector>
using namespace std;

template <typename T>
class A: public T
{
public:
A() {cout << "A: construct..." << endl;}
};

template <typename Type>
class B: public A<vector<Type>>
{
public:
B(){ cout << "B: construct ..." << endl;}
};
int main()
{
A <vector<int>> a;
B <int> b;

return 0;
}

//==============================================
在VC6.0 下编译:
Compiling...
main.cpp
F:\Code\HS\main.cpp(14) : error C2143: syntax error : missing '>' before '{'
F:\Code\HS\main.cpp(17) : see reference to class template instantiation 'B<Type>' being compiled
F:\Code\HS\main.cpp(20) : error C2146: syntax error : missing ',' before identifier 'a'
F:\Code\HS\main.cpp(20) : error C2065: 'a' : undeclared identifier
F:\Code\HS\main.cpp(20) : error C2143: syntax error : missing '>' before ';'
F:\Code\HS\main.cpp(14) : error C2143: syntax error : missing '>' before '{'
F:\Code\HS\main.cpp(21) : see reference to class template instantiation 'B<int>' being compiled
Error executing cl.exe.


加载中
0
Lunar_Lin
Lunar_Lin

       >>要分开  , 不过最新版本的c++已经 支持 按情况识别 >>了.

0
Timor君
Timor君

引用来自“Lunar_Lin”的答案

       >>要分开  , 不过最新版本的c++已经 支持 按情况识别 >>了.

果然如此。谢谢了
0
Lunar_Lin
Lunar_Lin

你编译模板 最好用高版本的VS, 能2011就最最佳了. 2010就非常够了.
高版本 1.  模板编译错误 会提示的比较人性化. 当你敲错什么东西时,它会尽可能智能的识别出你是敲错了,而不是依照 编译模板时的套路, 给输出 一堆 编译器思路的  可怕的 出错信息.
           2.  模板方面的bug 会比较少.
           3.  行为更接近标准.

VC6 模板有bug ,而且不支持 模板偏特化. vc7 也不支持模板参数 偏特化.

返回顶部
顶部