首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将模板化向量传递给C++函数?

如何将模板化向量传递给C++函数?
EN

Stack Overflow用户
提问于 2018-02-12 01:46:29
回答 1查看 36关注 0票数 1

我正在编写一个函数,它需要处理传递给它的任何类型的向量,而不管向量的内部类型如何。

该函数接受向量,查找元素的大小,然后将数据传递给GPU。

它看起来应该是:

代码语言:javascript
复制
void Object_3D::set_instance_data(Renderer* handler, vector<T> data)
{
    glBindVertexArray(VAO);

    glBindBuffer(GL_SHADER_STORAGE_BUFFER, (VBOs[3]));
    glBufferData(GL_SHADER_STORAGE_BUFFER, data.size()*sizeof(T), 
        data.data(), GL_DYNAMIC_COPY);

}

但是,我无法编译这段代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 01:50:07

看起来,您需要按照以下一般顺序将其转换为模板成员函数:

代码语言:javascript
复制
template <class T>
void Object_3D::set_instance_data(Renderer* handler, vector<T> const &data)
{
    glBindVertexArray(VAO);

    glBindBuffer(GL_SHADER_STORAGE_BUFFER, (VBOs[3]));
    glBufferData(GL_SHADER_STORAGE_BUFFER, data.size()*sizeof(T), 
        data.data(), GL_DYNAMIC_COPY);
}

当然,您必须将其声明为模板成员函数,而不仅仅是在没有声明的情况下定义它。旁白:尽管有其他方法来完成这项工作,但在使用模板时,通常最容易将定义(而不仅仅是声明)包含在标头中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48738497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档