gpt4 book ai didi

c++ - 将结构 vector 作为函数参数传递要求分配器

转载 作者:行者123 更新时间:2023-11-28 07:35:03 24 4
gpt4 key购买 nike

<分区>

我有一个结构:

    struct ShaderMacroStruct{
std::string macro;
std::string value;
ShaderMacroStruct():macro(""),value("")
{}
};

我有一个方法,它的参数之一是结构的 vector (上面定义):

GLuint MakeSeparableProgram(GLenum shaderType,  std::string &shaderText ,std::vector< ShaderMacroStruct> &shadersMacroList);

但是当传递所有参数时,我得到以下编译错误:

no instance of overloaded function "my_namespace::MakeSeparableProgram" matches the argument list
argument types are: (int, const std::string,
std::vector<my_namespace::ShaderMacroStruct,
std::allocator<my_namespace::ShaderMacroStruct>>)

为什么在这种情况下要求我提供一个分配器?

我正在使用 MSVC10 编译器。

更新:

如果我将 string& 更改为 const 那么问题就解决了。但是在这种情况下,我不得不在函数体中复制字符串以便能够修改它的内容。该方法不经常调用但是尽管如此,如何以性能明智的方式解决这个问题?

这里是函数调用:

GLuint prog = MakeSeparableProgram(GL_VERTEX_SHADER,LoadShader("sfd/demoShader.frag"),shadersMacroList);

其中 LoadShader() 返回 const std::string。

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