c03xp 发表于 2021-7-8 11:47

求助,C++ 指向成员函数的 指针成员变量,在成员函数里赋值和调用

本帖最后由 c03xp 于 2021-7-8 11:50 编辑

指针这东西太复杂了,实在不会弄,大神给个语法格式吧,感谢

#include <stdio.h>

class Pen {
public:
      void drawline();
      void drawcircle();
      void draw();
      void (Pen::*pDraw)();
};

void Pen::drawline() {
      printf("draw line\n");
      pDraw = &drawline;      //随便写的语法,只是为了表达我想实现的语义,这里用pDraw保存刚刚调用过的函数
      
}

void Pen::drawcircle() {
      printf("draw circle\n");
pDraw = &drawcircle; //同上
}

void Pen::draw() {
      printf("drawing...\n");
      pDraw();      //随便写的语法,报错
}


int main()
{
      Pen pen;
      pen.drawline();
      pen.draw();
    return 0;
}

石昊荒天帝 发表于 2021-7-8 12:29

c03xp 发表于 2021-7-8 13:07

百度了一下然后自己解决了

参考https://blog.csdn.net/qq_33154343/article/details/84141832


#include <stdio.h>

class Pen {
public:
        void drawline();
        void drawcircle();
        void draw();
        void (Pen::*pDraw)();
};

void Pen::drawline() {
        printf("draw line\n");
        pDraw = &Pen::drawline;
       
}

void Pen::drawcircle() {
        printf("draw circle\n");
        pDraw = &Pen::drawcircle;
}

void Pen::draw() {
        printf("drawing...\n");
        (this->*pDraw)();
}


int main()
{
        Pen pen;
        pen.drawline();
        pen.draw();
    return 0;
}

senper 发表于 2021-7-8 17:07

int main()
{
      Pen pen = new Pen();
      pen->drawline();
      pen->draw();
      delete pen;
    return 0;
}
好像这样就行

c03xp 发表于 2021-7-9 09:04

senper 发表于 2021-7-8 17:07
int main()
{
      Pen pen = new Pen();


Pen* pen = new Pen();:Dweeqw

侃遍天下无二人 发表于 2021-7-10 00:30

pDraw 是在哪声明的?

c03xp 发表于 2021-7-12 13:20

侃遍天下无二人 发表于 2021-7-10 00:30
pDraw 是在哪声明的?

是这一句:   void (Pen::*pDraw)();

侃遍天下无二人 发表于 2021-7-12 14:22

c03xp 发表于 2021-7-12 13:20
是这一句:   void (Pen::*pDraw)();

哦哦,是函数指针呀,这个我不熟悉,一时没看出来,一般我都按cpp的风格直接写函数进去了

c03xp 发表于 2021-7-12 16:48

侃遍天下无二人 发表于 2021-7-12 14:22
哦哦,是函数指针呀,这个我不熟悉,一时没看出来,一般我都按cpp的风格直接写函数进去了

那就麻烦点,要弄个枚举对应每个画线、画圆的函数,调用该函数后保存当前枚举值。需要时还要用switch判断当前是什么枚举值,再调用对应的函数
页: [1]
查看完整版本: 求助,C++ 指向成员函数的 指针成员变量,在成员函数里赋值和调用