通过 C++ 函数对象类访问参数

marital_weeping
    #include <iostream>

    struct A {
        explicit A(int a) : _a(a) {};
        int _a;
    };

    struct ClassFunction {
        ClassFunction(std::shared_ptr<A> myA) : _myA(myA) {}

        double operator() (int &x,
                           int &g) {
            return 1.0
                   + static_cast<double>(_myA->_a); // offending line
        }
        static double wrap(int x, int g, void *data) {
            return (*reinterpret_cast<ClassFunction*>(data)) (x,g);
        }
        std::shared_ptr<A> _myA;
    };

    int main() {
        int x = 1;
        int g;
        auto myA = std::shared_ptr<A>(new A(int(20)));
        ClassFunction myClassFunction(myA);
        std::cout << ClassFunction::wrap(x,g,NULL) << std::endl;
        return 0;
    }

我正在尝试创建一个ClassFunction将 astd::shared_ptr<A>作为参数的函数对象类然后我通过static成员 function调用它ClassFunction::wrap

如果我访问数据成员,A因为myA->_a程序无法运行(但是,它确实编译而没有任何抱怨)。

我如何使这项工作?

用户3322793

请尝试以下操作:

std::cout << ClassFunction::wrap(x, g, &myClassFunction) << std::endl;

reinterpret_cast<ClassFunction*>(data) 当数据指向 ClassFunction 类的实例时适用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C#中通过驱动的B类对象访问基类A函数

来自分类Dev

通过指针对象将参数传递给参数化构造函数的C ++程序错误?

来自分类Dev

通过参数访问对象的“自身”

来自分类Dev

通过C ++中的虚拟表访问函数

来自分类Dev

C#通过Lambda接受对象参数

来自分类Dev

如何通过对C函数和类对象的外部调用来处理C ++头文件

来自分类Dev

通过对象访问成员函数

来自分类Dev

通过函数挫折传递对象数组c ++

来自分类Dev

在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

来自分类Dev

通过类函数返回引用并在c ++中返回整个对象?

来自分类Dev

C++ 通过指针访问对象而不是直接访问

来自分类Dev

通过Java中的参数访问类的内容?

来自分类Dev

ctypes 包装器,用于通过带有析构函数的 C++ 类的值对象返回的函数

来自分类Dev

通过同步方法访问的私有类参数是否被视为“同步对象”?

来自分类Dev

如何通过指针从函数访问类的成员?

来自分类Dev

通过类的函数访问多个实例

来自分类Dev

C ++类:通过引用传递

来自分类Dev

通过接口访问不同的对象属性?C#

来自分类Dev

C ++通过带有数组索引/的类传递参数

来自分类Dev

通过内存共享C ++对象

来自分类Dev

通过C#处置对象

来自分类Dev

C ++通过重载更改成员函数的访问权限

来自分类Dev

通过函数遍历c数组

来自分类Dev

通过C ++使用BIOS函数

来自分类Dev

通过函数c传递指针

来自分类Dev

C ++通过引用函数传递

来自分类Dev

C ++函数通过strlen()运行“字符串”类型的参数,将新值保存到虚拟类实例,将虚拟类传递给新函数。为什么?

来自分类Dev

C ++:通过数组创建对象,但是如何传递参数?

来自分类Dev

C ++:通过数组创建的对象,但是如何传递参数?

Related 相关文章

  1. 1

    在C#中通过驱动的B类对象访问基类A函数

  2. 2

    通过指针对象将参数传递给参数化构造函数的C ++程序错误?

  3. 3

    通过参数访问对象的“自身”

  4. 4

    通过C ++中的虚拟表访问函数

  5. 5

    C#通过Lambda接受对象参数

  6. 6

    如何通过对C函数和类对象的外部调用来处理C ++头文件

  7. 7

    通过对象访问成员函数

  8. 8

    通过函数挫折传递对象数组c ++

  9. 9

    在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

  10. 10

    通过类函数返回引用并在c ++中返回整个对象?

  11. 11

    C++ 通过指针访问对象而不是直接访问

  12. 12

    通过Java中的参数访问类的内容?

  13. 13

    ctypes 包装器,用于通过带有析构函数的 C++ 类的值对象返回的函数

  14. 14

    通过同步方法访问的私有类参数是否被视为“同步对象”?

  15. 15

    如何通过指针从函数访问类的成员?

  16. 16

    通过类的函数访问多个实例

  17. 17

    C ++类:通过引用传递

  18. 18

    通过接口访问不同的对象属性?C#

  19. 19

    C ++通过带有数组索引/的类传递参数

  20. 20

    通过内存共享C ++对象

  21. 21

    通过C#处置对象

  22. 22

    C ++通过重载更改成员函数的访问权限

  23. 23

    通过函数遍历c数组

  24. 24

    通过C ++使用BIOS函数

  25. 25

    通过函数c传递指针

  26. 26

    C ++通过引用函数传递

  27. 27

    C ++函数通过strlen()运行“字符串”类型的参数,将新值保存到虚拟类实例,将虚拟类传递给新函数。为什么?

  28. 28

    C ++:通过数组创建对象,但是如何传递参数?

  29. 29

    C ++:通过数组创建的对象,但是如何传递参数?

热门标签

归档