我想发送一个指向函数的指针,我的问题是,当我尝试发送指向该函数的指针的内存地址时,它强制我声明第二个函数的参数,如**。
void MaterialParser::processMaterialTexture(vector<string>* params, MaterialTexture* texture){
for (int i = 0; i < params->size(); i++){
if((*params)[i]=="-o"){
proccesOST(&texture,¶ms,i);
}
}
}
void MaterialParser::proccesOST(MaterialTexture* texture ,vector<string>* params,int index){
//function
当我调用funcion时,抛出以下错误,参数MaterialTexture **与参数MaterialTexture *不兼容。
proccesOST(&texture,¶ms,i);
如果我声明函数如:
void MaterialParser::proccesOST(MaterialTexture** texture ,vector<string>** params,int index){
如何访问变量?或者更好,如何将参数发送为仅指针而不是双指针?
答案 0 :(得分:2)
省略&amp;在函数调用中。你的纹理已经是一个指针。 &amp;运算符创建一个指向它后面的内容的指针,在这种情况下你不想这样做。
答案 1 :(得分:0)
texture
已经是MaterialTexture*
类型;对于params也是如此。因此,当您将&
传递给另一个函数时,不需要在它前面放置proccesOST(texture, params,i);
。
只需写下
&
澄清原因:使用&texture
运算符,您可以获取某些内容的地址。如果那个东西,如&
的情况,已经是一个指针,你得到指针的地址;以及可以容纳的类型是指向指针的指针。可以这样考虑:每次在变量前添加*
时,您还必须在能够保存结果的类型中添加{{1}}。