【发布时间】:2019-12-23 00:49:30
【问题描述】:
我想在模板类之外定义函数,如下所述。
已经为第二个参数尝试了很多组合,它是一个模板并且也采用默认参数。
template <typename T>
class CustomAllocator
{
//My custom allocator
};
template <typename T, typename Allocator = CustomAllocator<T> >
class CustomContainer
{
void push_back();
};
/*I want to define push_back outside my class, tried everything.
Almost 4 hours spent through stackoverflow, fluentcpp and all sites*/
// What should be specified for Allocator here ?
template <typename T>
void CustomContainer<T,Allocator>::push_back(T value)
{
}
//OR
template <typename T>
void CustomContainer<T,CustomAllocator<> >::push_back(T value)
{
}
我希望它在类之外定义 实际得到编译器错误,如果是简单类型,我可以在第二个参数中轻松提及 int、float 等。
【问题讨论】:
-
template <typename T, typename Allocator> -
在模板定义中,
push_back()没有参数。该函数的两个尝试定义都带有一个参数。在模板类中,将函数声明更改为void push_back(DataType);(假设DataType已在某处定义;它不会出现在示例代码中的任何位置。 -
对不起,DataType 混淆了,它基本上是 T 类型,我已经编辑了源代码。
标签: c++ function class templates definition