发送指向函数的指针

时间:2013-12-17 08:42:37

标签: c++ pointers

我想发送一个指向函数的指针,我的问题是,当我尝试发送指向该函数的指针的内存地址时,它强制我声明第二个函数的参数,如**。

void MaterialParser::processMaterialTexture(vector<string>* params, MaterialTexture* texture){
    for (int i = 0; i < params->size(); i++){
        if((*params)[i]=="-o"){
        proccesOST(&texture,&params,i);
        }
     }
     }
void MaterialParser::proccesOST(MaterialTexture* texture ,vector<string>* params,int index){
//function 

当我调用funcion时,抛出以下错误,参数MaterialTexture **与参数MaterialTexture *不兼容。

proccesOST(&texture,&params,i);

如果我声明函数如:

void MaterialParser::proccesOST(MaterialTexture** texture ,vector<string>** params,int index){

如何访问变量?或者更好,如何将参数发送为仅指针而不是双指针?

2 个答案:

答案 0 :(得分:2)

省略&amp;在函数调用中。你的纹理已经是一个指针。 &amp;运算符创建一个指向它后面的内容的指针,在这种情况下你不想这样做。

答案 1 :(得分:0)

texture已经是MaterialTexture*类型;对于params也是如此。因此,当您将&传递给另一个函数时,不需要在它前面放置proccesOST(texture, params,i);

只需写下

&

澄清原因:使用&texture运算符,您可以获取某些内容的地址。如果那个东西,如&的情况,已经是一个指针,你得到指针的地址;以及可以容纳的类型是指向指针的指针。可以这样考虑:每次在变量前添加*时,您还必须在能够保存结果的类型中添加{{1}}。