template-id 与任何模板声明 GNU gcc 编译器都不匹配



>我正在尝试创建一个openGL程序。我只在这个头文件中收到错误。错误是"错误:'void VertexBufferLayout::method(unsigned int('的模板 id '方法'与任何模板声明都不匹配" 我不知道该怎么办。

我尝试过,但班上的模板没有成功。

class VertexBufferLayout
{
private:
    std::vector<VertexBufferElement> m_Elements;
    unsigned int m_Stride;
public:
    VertexBufferLayout()
        : m_Stride(0) {}
    public:
    template <typename T>
    void method(T obj)
   {
//       static_assert(false);
    }
    inline const std::vector<VertexBufferElement> GetElement() const { return m_Elements; }
    inline unsigned int GetStride() const { return m_Stride; }
};
template<>
void VertexBufferLayout::method<float>(unsigned int count)
{
    VertexBufferLayout::m_Elements.push_back({ GL_FLOAT, count, false });
    VertexBufferLayout::m_Stride += VertexBufferElement::GetSizeOfType(GL_FLOAT);
}
template<>
void VertexBufferLayout::method<unsigned int>(unsigned int count)
{
    VertexBufferLayout::m_Elements.push_back({ GL_UNSIGNED_INT, count, false });
    VertexBufferLayout::m_Stride += VertexBufferElement::GetSizeOfType(GL_UNSIGNED_INT);
}
template<>
void VertexBufferLayout::method<unsigned char>(unsigned int count)
{
    VertexBufferLayout::m_Elements.push_back({ GL_UNSIGNED_BYTE, count, true });
    VertexBufferLayout::m_Stride += VertexBufferElement::GetSizeOfType(GL_UNSIGNED_BYTE);
}  

错误是"错误:'void VertexBufferLayout::method(unsigned int('的模板 ID '方法'与任何模板声明都不匹配">

这里是什么类型的Tfloat还是unsigned int

VertexBufferLayout::method<float>(unsigned int count)

这是经典的复制粘贴错误。我想一定是

VertexBufferLayout::method<float>(float count)

后面的行有相同的错误

void VertexBufferLayout::method<unsigned char>(unsigned int count)

必须是

void VertexBufferLayout::method<unsigned char>(unsigned char count)

最新更新