我试图修改一个可以通过字符串搜索的函数指针表。 我定义了以下模板类,但我遇到静态成员问题。
我遇到的错误是
test.cpp:18: error: expected constructor, destructor, or type conversion
before ‘Attribute’
即使添加构造函数它也不起作用:你知道编译器告诉我的原因是什么,以及这段简单代码中缺少什么?
#include<iostream>
#include<map>
#include<boost/function.hpp>
using namespace std;
using namespace boost;
template<class T>
class Attribute {
public:
typedef map<string, boost::function<void(T*,string) > > Params;
static Params params_;
};
template<class T>
T::Params Attribute<T>::params_;
你能帮助我吗?
答案 0 :(得分:3)
typename
之前需要T::Params
。
template<class T>
class Attribute
{
public:
typedef map<string, boost::function<void(T*,string) > > Params;
static typename T::Params params_;
^^^^^^^^^^^^
};
template<class T>
typename T::Params Attribute<T>::params_;
^^^^^^^^
或者...
template<class T>
class Attribute
{
public:
typedef map<string,int > Params;
static Params params_;
};
template<class T>
typename Attribute<T>::Params Attribute<T>::params_;
^^^^^^^^^^^^^^^^^^^^^^^