混合模板类和模板方法时的错误
C++ Error when mixing template class and template method
我有一个类,它以size类型作为参数,以防不想使用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()
{
// ...
}
你差点就成功了。您必须像声明中那样堆叠template
:首先是类,然后是成员。
template < typename SizeT >
template < typename T >
T
BufferReader<SizeT>::Read()
{
return T {};
}
请注意,可以通过在类体中定义函数来简化代码,但我理解有些人出于美观的原因更喜欢将声明与定义分开。
相关文章:
- 将成员函数指针作为参数传递给模板方法
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- OpenGL 顶点缓冲区类重定义和模板方法错误
- 处理模板方法中的错误
- 模板方法定义的问题 - 错误C2244:无法将函数定义与现有声明匹配
- 类模板方法的专用化,类型名称是类模板 - 错误:参数处的类型/值不匹配
- 为什么 GCC 在显式指定模板参数时会产生奇怪的错误并尝试调用错误的方法?
- 我不明白的模板方法中的语法错误
- 是否有任何方法可以避免警告/错误模板实例化回溯
- 解决gcc错误的方法:在模板中使用chrono_literals会中断字符串_文本
- c++编译错误涉及方法重载的2个模板函数
- 混合模板类和模板方法时的错误
- 模板方法编译错误,从内部类返回实例
- 使用模板方法"expected primary expression"错误
- 返回嵌套模板的模板方法的签名会导致编译错误
- 在未生成代码的模板方法上引发错误
- 可变模板方法和std::函数-编译错误
- 模板方法专门化链接错误