gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:13:14 25 4
gpt4 key购买 nike

我正在尝试创建一个 openGL 程序。我只在这个头文件中得到错误。错误是“错误:'void VertexBufferLayout::method(unsigned int)' 的 template-id 'method' 与任何模板声明都不匹配”我不知道该怎么做。

我已经尝试过但没有成功使用类中的模板。

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);

}

错误是“error: template-id 'method ' for 'void VertexBufferLayout::method(unsigned int)' does not match any template declaration”

最佳答案

这里的T是什么类型,float还是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)

关于c++ - template-id 不匹配任何模板声明 GNU gcc 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57230219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com