小编Alf*_*mer的帖子

调用C++成员函数指针:this-pointer被破坏

我需要将一些成员函数指针转换为void*指针(因为我需要将它们推送到Lua堆栈,但问题不是Lua相关).

我是这样做的union.但是当我将成员函数指针转换为a void*并再次返回然后尝试使用该类的实例调用指针时,this指针会被破坏.扼杀,这个问题不会发生,如果我将void*指针转换回C风格的函数指针,并带有指向类的指针作为它的第一个参数.

这是一段演示问题的代码:

#include <iostream>
using namespace std;

class test
{
    int a;

    public:
        void tellSomething ()
        {
            cout << "this: " << this << endl;
            cout << "referencing member variable..." << endl;
            cout << a << endl;
        }
};

int main ()
{
    union
    {
        void *ptr;
        void (test::*func) ();
    } conv1, conv2;

    union
    {
        void *ptr;
        void (*func) (test*);
    } conv3;

    test &t = *new test ();

    cout …
Run Code Online (Sandbox Code Playgroud)

c++ pointers function member void

5
推荐指数
1
解决办法
2575
查看次数

标签 统计

c++ ×1

function ×1

member ×1

pointers ×1

void ×1