FuncPtrTab 到方法

发布于 2024-10-17 23:43:14 字数 393 浏览 1 评论 0原文

我很难让这项工作成功。我正在尝试执行一个方法 存放在方法指针选项卡中。

这是我的例子:

void class1::fct1();
void Class1::fct2();

void Class1::manageFct()
{
    static const void (*ptrFuncTab)[] = {
        &Class1::fct1,
        &Class1::fct2
    };
    opCode = 0;
    ptrFunctab[opCode](); //==> call Cpu::fct1()
}

我知道我必须将我想要申请的实例放在其中 fct指出。但如何呢? 有谁知道我做错了什么?

谢谢, 库瓦

I'm having a hard time trying to make this work. I'm trying to execute a method
stocked in a method pointer tab.

here is my example :

void class1::fct1();
void Class1::fct2();

void Class1::manageFct()
{
    static const void (*ptrFuncTab)[] = {
        &Class1::fct1,
        &Class1::fct2
    };
    opCode = 0;
    ptrFunctab[opCode](); //==> call Cpu::fct1()
}

i understand that i have to put the instance in which i want to apply
the fct pointed. But how ?
Does anyone knows what i'm doing wrong ?

Thanks,
Cuva

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

此岸叶落 2024-10-24 23:43:14

这样做:

typedef void (Class1::*MemFn)();

static const MemFn ptrFuncTab[] = {
    &Class1::fct1,
    &Class1::fct2
};

您使用的称为函数指针;我使用的称为成员函数指针。而且它们不是同一件事。

将此函数表用作:

Class1 c;
(c.*ptrFuncTab[0])();

或者如果您想使用指针,则

Class1 *pC = new Class1();
(pC->*ptrFuncTab[0])();

Do this:

typedef void (Class1::*MemFn)();

static const MemFn ptrFuncTab[] = {
    &Class1::fct1,
    &Class1::fct2
};

What you were using is called pointer-to-function; what I'm using is called pointer-to-member-function. And they're not the same thing.

Use this function table as:

Class1 c;
(c.*ptrFuncTab[0])();

Or if you want to use pointer, then

Class1 *pC = new Class1();
(pC->*ptrFuncTab[0])();
月棠 2024-10-24 23:43:14

一旦你像纳瓦兹所说的那样进行编辑,你就可以像这样调用表中的函数:

Class1* ptr = new Class1();
(ptr->*ptrFuncTab[opCode])();

作为指针,并且像这样:

Class1  ref;
(ref.*ptrFuncTab[opCode])();

作为参考。

Once you edit like Nawaz said, you call a function in the table like this:

Class1* ptr = new Class1();
(ptr->*ptrFuncTab[opCode])();

for a pointer, and like this:

Class1  ref;
(ref.*ptrFuncTab[opCode])();

for a reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文