我有一个类,它以大小类型作为参数,以防万一不想使用size_t或另一种需要强制转换并检查溢出的硬编码类型。
此类还具有一些采用第二种模板类型的方法:

template< typename SizeType = uint32_t >
class BufferReader
{
    SizeType m_nPosition;

    template< typename T >
    T Read();
}

我的问题是,实现此语法的语法是什么?
template< typename SizeType, typename T >
T BufferReader< SizeType >::Read()
{
    // ...
}

这给我一个错误:
invalid use of incomplete type 'class core::BufferReader<SizeType>'

要么 :
template< typename T >
template< typename SizeType >
T BufferReader< SizeType >::Read()
{
    // ...
}

这给出了同样的错误。

还是其他?

谢谢 !

最佳答案

您的第二个示例几乎是正确的,您只需要首先具有该类的模板参数,然后才具有该功能的模板参数:

template< typename SizeType >
template< typename T >
T BufferReader< SizeType >::Read()
{
    // ...
}

关于c++ - 混合模板类和模板方法时出现C++错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33149982/

10-13 08:33