通过 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 条评论
登录 后参与评论

相关文章

无法通过函数的参数访问对象的属性

C#如何通过另一个类对象访问类对象的值

c ++类对象作为函数参数

c++ - 如何通过基类引用访问派生类的对象?

C ++:通过模板传递参数Vs通过函数参数传递

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

如何通过索引C#访问对象

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

通过->语法C ++从指针访问函数

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

C#通过Lambda接受对象参数

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

通过对象访问成员函数

C++ 不能通过友元类访问受保护的成员函数

当那些 input$... 对象“无法”通过函数的参数提供时,如何访问函数中的 input$... 对象

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

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

binary_search通过其成员函数的返回变量查找类对象[c ++]

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

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

从Objective-C类访问对象的Swift函数

访问在 C++ 中类的构造函数中创建的对象

将Cython类对象作为参数传递给C函数

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

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

C++:通过主函数调用类中的特定函数

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

无法通过代理对象访问类方法

限制可通过多个模板参数友好函数访问的类实例的范围