C ++:如何调用属于同一类成员的成员函数指针?

羽毛脑

我试图通过允许我选择不同形式的数学函数并通过将它们实例化为特定类的对象来改变它们的参数,来在数字中实现更大的灵活性。该课程包括一些我可以选择的数学函数以及一些可以改变的参数。类的构造函数根据我想要的数学函数将类中的成员函数指针设置为成员函数。我想只使用指针直接通过在例程中使用指针来调用它指向的任何函数。

但是,事实证明这令人望而生畏,因为我不知道成员函数指针需要某种语法,并且根据我所收集的内容,其工作原理与常规函数指针有些不同。我已经做了很多实验,并为自己构建了一个下面共享的最小示例。

#include<iostream>
#include<string.h>
#include<cstdlib>
#include<stdio.h>

class Someclass
{
public:
    // constructor to set pointer
    Someclass(std::string);

    // member function pointer to hold functions
    void (Someclass::*fptr)();

    // auxiliary function to call testfunction via pointer
    void call ();

    // testfunction
    void foo();
};

// testfunction
void Someclass::foo()
{
    printf("foo says hi! \n");
}

// call via specific function
void Someclass::call()
{
    (this->*fptr)();
}

// constructor
Someclass::Someclass(std::string name)
{
    if(name=="foo")
    {
        this->fptr = &Someclass::foo;
    }
}


int main()
{
    Someclass someobject("foo");

    someobject.foo(); // direct testfunction call: Works OK
    someobject.call(); // call via auxiliary function: Works OK
    //(someobject.*fptr)(); // direct pointer dereferencing: Gives Error

    return(EXIT_SUCCESS);
}

它显示了我可以通过使用另一个成员函数访问该指针,该成员函数仅通过使用this指针调用该指针指向的内容。但是,如果尝试通过该行直接在主函数中使用指针,我似乎仍然无法使函数调用正常工作,

(someobject.*fptr)()

这个特定的表达式导致我的编译器抱怨范围,如果我包括类范围,则编译器会提及对非静态成员的无效使用。不过,对于为什么我的实现在这里不起作用以及是否起作用,我的问题中的正确语法如何以及为什么必须如此,我仍然感到困惑。

任何见解将不胜感激。

船长

这样做的原因是.*指示指向成员函数的指针,而不像.and.->操作符那样直接引用对象的成员由于fptr是成员Someclass而不是局部变量,因此您需要像这样直接引用它

(someobject.*someobject.fptr)();

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:从同一类的成员函数调用纯虚函数

来自分类Dev

如何像正常的C函数一样使用正确的“ this”指针调用C ++类成员函数?(指向类成员函数的指针)

来自分类Dev

调用成员指针函数C ++

来自分类Dev

调用成员指针函数C ++

来自分类Dev

使公共成员变量访问C ++中同一类的私有成员

来自分类Dev

方法无法访问同一类的成员变量(C ++)

来自分类Dev

C ++:如何将指针传递给另一个类的成员函数?

来自分类Dev

C ++如何将成员函数指针传递给另一个类?

来自分类Dev

指向类成员的 C++ 函数指针

来自分类Dev

成员函数指针c ++

来自分类Dev

同一类的另一个构造函数中的c ++调用构造函数

来自分类Dev

C++:调用成员函数时在指针向量中无效使用抽象类

来自分类Dev

想要一个静态成员函数来调用同一类的成员变量

来自分类Dev

在类定义C ++之前使用类成员函数指针

来自分类Dev

C ++如何识别要使用的函数(与类成员函数指针相关)

来自分类Dev

如何使用函数更新c ++类成员?

来自分类Dev

C ++成员函数指针定义

来自分类Dev

如何从jquery中属于同一类的成员的元素中获取所有不同的值?

来自分类Dev

来自其他类的C ++成员函数指针

来自分类Dev

C ++-无法修改类成员函数中的指针

来自分类Dev

如何获得通用函数指针作为C ++类的私有成员?

来自分类Dev

从C ++中的类模板中的函数调用另一个成员函数

来自分类Dev

C ++模板:从基类调用派生模板类的成员函数

来自分类Dev

C++ 传递对同一类中函数的引用

来自分类Dev

Lua C API如何确定将函数称为类成员还是仅从表中调用函数?

来自分类Dev

如何为可以通过其名称调用成员函数的c ++类提供函数

来自分类Dev

在另一个类中调用成员函数c ++

来自分类Dev

在另一个类中调用成员函数c ++

来自分类Dev

如何在C ++中调用指针成员变量的构造?

Related 相关文章

  1. 1

    C ++:从同一类的成员函数调用纯虚函数

  2. 2

    如何像正常的C函数一样使用正确的“ this”指针调用C ++类成员函数?(指向类成员函数的指针)

  3. 3

    调用成员指针函数C ++

  4. 4

    调用成员指针函数C ++

  5. 5

    使公共成员变量访问C ++中同一类的私有成员

  6. 6

    方法无法访问同一类的成员变量(C ++)

  7. 7

    C ++:如何将指针传递给另一个类的成员函数?

  8. 8

    C ++如何将成员函数指针传递给另一个类?

  9. 9

    指向类成员的 C++ 函数指针

  10. 10

    成员函数指针c ++

  11. 11

    同一类的另一个构造函数中的c ++调用构造函数

  12. 12

    C++:调用成员函数时在指针向量中无效使用抽象类

  13. 13

    想要一个静态成员函数来调用同一类的成员变量

  14. 14

    在类定义C ++之前使用类成员函数指针

  15. 15

    C ++如何识别要使用的函数(与类成员函数指针相关)

  16. 16

    如何使用函数更新c ++类成员?

  17. 17

    C ++成员函数指针定义

  18. 18

    如何从jquery中属于同一类的成员的元素中获取所有不同的值?

  19. 19

    来自其他类的C ++成员函数指针

  20. 20

    C ++-无法修改类成员函数中的指针

  21. 21

    如何获得通用函数指针作为C ++类的私有成员?

  22. 22

    从C ++中的类模板中的函数调用另一个成员函数

  23. 23

    C ++模板:从基类调用派生模板类的成员函数

  24. 24

    C++ 传递对同一类中函数的引用

  25. 25

    Lua C API如何确定将函数称为类成员还是仅从表中调用函数?

  26. 26

    如何为可以通过其名称调用成员函数的c ++类提供函数

  27. 27

    在另一个类中调用成员函数c ++

  28. 28

    在另一个类中调用成员函数c ++

  29. 29

    如何在C ++中调用指针成员变量的构造?

热门标签

归档