读书人

模板

发布时间: 2012-03-09 21:42:54 作者: rapoo

模板高手请进!
#include <iostream>
#include <vector>
using namespace std;


struct A {void f(){cout < < "using A " < <endl;}};
struct B {void f(){cout < < "using B " < <endl;}};
struct C {void f(){cout < < "using C " < <endl;}};

template <int>
struct ResultType;
template <> struct ResultType <1>
{typedef A type;};
template <> struct ResultType <2>
{typedef B type;};
template <> struct ResultType <3>
{typedef C type;};

template <int useTypeFlags>
class actualClass{
public:
typedef typename ResultType <useTypeFlags> ::type MyType;
public:
vector <MyType> myVec;
};

actacualClass < 3 > X3;注释掉是正确的,去掉注释是错误的!

int main()
{

}
f:\beifen\腐蚀\腐蚀\aaa.cpp(27) : error C2143: syntax error : missing '; ' before ' < '
f:\beifen\腐蚀\腐蚀\aaa.cpp(27) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

问题1:下面这一句是什么意思呢?
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

问题2:
如何更正错误呢?

[解决办法]
actacualClass <3> X3;
改成
actualClass <3> X3;

读书人网 >C++

热点推荐