【问题标题】:Send pointer to a function发送指向函数的指针
【发布时间】:2013-12-17 08:42:36
【问题描述】:

我想发送一个指向函数的指针,我的问题是当我尝试将指针的内存地址发送给函数时,它迫使我像**一样声明第二个函数的参数。

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 

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

proccesOST(&texture,&params,i);

如果我像这样声明函数:

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

如何访问变量?或者更好,我怎样才能发送参数只是一个指针而不是双指针?

【问题讨论】:

    标签: c++ pointers


    【解决方案1】:

    在函数调用中省略 &。你的纹理已经是一个指针。 & 运算符创建一个指向其背后内容的指针,在这种情况下您不希望这样做。

    【讨论】:

      【解决方案2】:

      texture 已经是MaterialTexture* 类型;参数也是如此。因此,当您将其传递给其他函数时,无需在其前面放置 &amp;

      随便写

      proccesOST(texture, params,i);
      

      澄清原因:使用&amp; 运算符,您可以获取某物的地址。如果那个东西,就像&amp;texture 的情况一样,已经是一个指针,你得到指针的地址;并且可以保存的类型是指向指针的指针。可以这样想:每次在变量前面添加 &amp; 时,还必须将 * 添加到能够保存结果的类型中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 2011-04-26
        • 1970-01-01
        相关资源
        最近更新 更多