我疯了。 我正在尝试创建一个分配器,我在头文件中写了这个定义。
template<typename T>
class Allocator
{
using size_type = size_t;
using difference_type = ptrdiff_t;
using pointer = T*;
using const_pointer = const T*;
using reference = T&;
using const_reference = const T&;
using value_type = T;
//others stuff
// Get address of a reference
pointer address(reference x) const;
...
};
之后,我尝试在.cpp文件中编写定义,如:
template<typename T>
pointer Allocator<T>::address(reference x) const
{
return &x;
}
但错了。 我也试着写:
template<typename T>
Allocator<T>::pointer Allocator<T>::address(reference x) const
{
return &x;
}
但是以同样的方式出错。
使用模板别名对方法的正确定义是什么?
感谢您的帮助。
答案 0 :(得分:2)
template <typename T>
typename Allocator<T>::pointer Allocator<T>::address(reference x) const
//~~~~~^
{
return &x;
}
template <typename T>
auto Allocator<T>::address(reference x) const -> pointer
//~^ ~~~~~~~~~^
{
return &x;
}