我有一个模板类,试图在类定义之外定义成员函数,如下所示:
class traits {
typedef std::vector<int> container_t;
...other typedefs//
};
template <class traits>
class Foo {
typedef typename traits::container_t container_t
// where container_t = std::vector <int>
// member function to be templatized over container type
void Initialize (container_t&);
private:
container_t temp; //temp is of type std::vector<int>
};
template <typename T>
void Foo <traits>::Initialize (T& data)
{
fill the data
}
我希望函数Initialize采取模板容器类型-container_t,其中container_t可以是std :: vector或std :: set等。
但我得到编译器错误为
“初始化(T&)的原型与Foo类中的任何不匹配”
“候选者正在初始化(container_t&)” ...
最佳答案
这样可以解决您的问题吗?
template <class traits>
void Foo<traits>::Initialize( typename traits::container_t& t ) {
// code
}