将对象传递给类并在同一个类中的静态函数中调用它

马吉德·霍加蒂

我正在使用 gdal 做一些光栅工作,它有一个 GDALWarpAppOptionsSetProgress 函数,它获得一个静态函数来显示它的进程。在这里你可以找到它的链接:http : //www.gdal.org/gdal__utils_8h.html#a6ed3c9681cabcfcbd6fc87d427762482和这个链接

http://gdal.sourcearchive.com/documentation/1.6.0/gdal_8h_5703b651695c0cbe6f3644a0a18dda8b.html

好吧,我知道我必须编写一个静态函数才能使用它,这是我的函数

static int My_FN_GDALTermProgress( double dfComplete, const char *pszMessage, void *pData)
{

    if(progressBar){
        progressBar->setValue(FN_GDAL_PROGRESS_VALUE);
    }
  double FN_GDAL_PROGRESS_VALUE = dfComplete * 100;
   return TRUE;
}

好吧,我有一个名为的类gdal_dem,就像这样

#include "gdal_dem.h"
#include "gdal_wrap.h"
#include <qdebug.h>
#include <iostream>
#include "cpl_string.h"
#include "gdal_priv.h"
#include "ogr_spatialref.h"
#include "gdal_utils_priv.h"
#include "cpl_error.h"
#include <QString>
#include "commonutils.h"
#include <QFile>
gdal_dem::gdal_dem(QString SrcFilename):
    SrcFile(SrcFilename)
{


}


float FN_GDAL_PROGRESS_VALUE = 0.0f;

static int  My_FN_GDALTermProgress(double dfComplete,
                                  CPL_UNUSED const char * pszMessage,
                                  CPL_UNUSED void * pProgressArg )
{
    FN_GDAL_PROGRESS_VALUE = dfComplete * 100;
    printf("Progress: %f\n",FN_GDAL_PROGRESS_VALUE);
    return true;
}

////


int gdal_dem::colorrelief(QString Dstanationfile,QString colorfile){



   .....
        if(!(psOptionsForBinary->bQuiet))
{
    prgFunc=My_FN_GDALTermProgress;
    GDALDEMProcessingOptionsSetProgress(psOptions, prgFunc,NULL);
}


    ......
}

在上面的代码中,我可以在处理选项中设置上述功能,它工作正常。但我的问题是当我想更新进度条时。我有一个QProgressBar,它在我的主班里。如何将其传递给静态函数?我尝试了以下方法: 1- 我尝试在我的 gdal_dem 中获取进度条,并在其中定义了一个静态变量gdal_dem并尝试设置其值并在 中更新它My_FN_GDALTermProgress,问题是因为progressbar也是静态的,我可以在 wrap.cpp 的承包商中看到它, 2-我试图My_FN_GDALTermProgress在我的主应用程序类中定义一个新函数,但它必须是静态的,我遇到了这个错误cannot declare member function to have static linkage

3- 我也试过这种方法,但它不起作用https://www.badprog.com/c-errors-warnings-cannot-declare-member-function-static-void-myclassmymethod-to-have-static-linkage

那么,如何将参数传递给我的 gdal_dem 类并在其中的静态类中更新其值?

尼科斯 C.

使用pData参数。你可以在注册静态函数时传递任何你想要的东西。在这种情况下,您可以传递一个指向您的QProgressBar对象的指针

QProgressBar* qProgBarObj = // ...
GDALDEMProcessingOptionsSetProgress(psOptions, prgFunc, qProgBarObj);

然后静态函数将其作为第三个参数接收:

static int My_FN_GDALTermProgress(double dfComplete, const char *pszMessage, void *pData)
{
    auto progBar = reinterpret_cast<QProgressBar*>(pData);
    progBar->setValue(/* ... */);
    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何初始化一个类并将对象传递给Android中的构造函数?

来自分类Dev

将不同的类对象传递给一个函数并在 Haxe 中获取它的属性?

来自分类Dev

无法在同一个类中调用函数

来自分类Dev

通过另一个类将对象传递给一个类

来自分类Dev

如何从同一个类的静态函数访问一个类的私有成员?

来自分类Dev

扩展并在同一个类中实现

来自分类Dev

扩展并在同一个类中实现

来自分类Dev

将对象传递给函数调用中的函数

来自分类Dev

同一个函数中的静态函数变量初始化顺序

来自分类Dev

为什么类模板中的成员函数在同一个地址创建同一个对象

来自分类Dev

将模板类的对象传递给另一个类的构造函数

来自分类Dev

在同一个类的构造函数中调用函数是否很好?

来自分类Dev

将对象传递给另一个类是否会创建一个新的单独对象?

来自分类Dev

如何将参数列表中的类对象传递给另一台计算机并在其上调用函数?

来自分类Dev

使用actionlistener在同一个类中调用void函数

来自分类Dev

在同一个类中调用函数不起作用,打字稿

来自分类Dev

C#静态类:我应该将对象传递给构造函数吗?

来自分类Dev

C#静态类:我应该将对象传递给构造函数吗?

来自分类Dev

NodeJS:静态方法可以调用同一个类的构造函数吗?

来自分类Dev

如何将编写的对象传递给另一个类的构造函数?

来自分类Dev

从同一个类中的另一个方法访问作为方法传递给另一个类的方法

来自分类Dev

在Objective-C中将对象传递给另一个类的最佳方法是什么?

来自分类Dev

将一个类的对象传递给另一个类的方法

来自分类Dev

为什么我不能在 Javascript 中的同一个类函数中调用一个类函数?

来自分类Dev

如何将参数从一个函数传递到另一个函数,但在php中的同一个类中

来自分类Dev

你如何从同一个类中调用一个方法?

来自分类Dev

如何在同一个类中的静态方法中引发异常

来自分类Dev

同一个函数中的同一个类不同的id,以避免额外的代码

来自分类Dev

如何将类的对象传递给对象的类函数中的函数?

Related 相关文章

  1. 1

    如何初始化一个类并将对象传递给Android中的构造函数?

  2. 2

    将不同的类对象传递给一个函数并在 Haxe 中获取它的属性?

  3. 3

    无法在同一个类中调用函数

  4. 4

    通过另一个类将对象传递给一个类

  5. 5

    如何从同一个类的静态函数访问一个类的私有成员?

  6. 6

    扩展并在同一个类中实现

  7. 7

    扩展并在同一个类中实现

  8. 8

    将对象传递给函数调用中的函数

  9. 9

    同一个函数中的静态函数变量初始化顺序

  10. 10

    为什么类模板中的成员函数在同一个地址创建同一个对象

  11. 11

    将模板类的对象传递给另一个类的构造函数

  12. 12

    在同一个类的构造函数中调用函数是否很好?

  13. 13

    将对象传递给另一个类是否会创建一个新的单独对象?

  14. 14

    如何将参数列表中的类对象传递给另一台计算机并在其上调用函数?

  15. 15

    使用actionlistener在同一个类中调用void函数

  16. 16

    在同一个类中调用函数不起作用,打字稿

  17. 17

    C#静态类:我应该将对象传递给构造函数吗?

  18. 18

    C#静态类:我应该将对象传递给构造函数吗?

  19. 19

    NodeJS:静态方法可以调用同一个类的构造函数吗?

  20. 20

    如何将编写的对象传递给另一个类的构造函数?

  21. 21

    从同一个类中的另一个方法访问作为方法传递给另一个类的方法

  22. 22

    在Objective-C中将对象传递给另一个类的最佳方法是什么?

  23. 23

    将一个类的对象传递给另一个类的方法

  24. 24

    为什么我不能在 Javascript 中的同一个类函数中调用一个类函数?

  25. 25

    如何将参数从一个函数传递到另一个函数,但在php中的同一个类中

  26. 26

    你如何从同一个类中调用一个方法?

  27. 27

    如何在同一个类中的静态方法中引发异常

  28. 28

    同一个函数中的同一个类不同的id,以避免额外的代码

  29. 29

    如何将类的对象传递给对象的类函数中的函数?

热门标签

归档