gpt4 book ai didi

c++ - 如何在 C++ 中创建指向(或引用)同一类的另一个成员函数的成员函数

转载 作者:行者123 更新时间:2023-11-30 00:45:38 25 4
gpt4 key购买 nike

简而言之,我的问题是我有一个类的两个不同方法,我想要那个类的第三个方法,它可以指向我的第一个或第二个方法。简化的代码如下所示:

typedef void(*func)(void);  // The type isn't good I believe

class Foo
{
private:
void f1(void){return;}
void f2(void){return;}


public:
Foo();
~Foo();
void& f(void); // what should be the returned type here ? func& ? void& ?

void associate_f(int a)
{
if (a==1)
f = f1; // or anything like that
else
f = f2;
}
};

int main()
{
Foo * foo = new Foo();
foo->associate_f(1);
return 0;
}

如果还有其他方法可以达到同样的目的,我想知道它们!

最佳答案

我更愿意将虚拟多态性与 Template Method Pattern 一起使用对于这种情况:

class FooBase
{
protected:
virtual void inner() = 0;

public:
Foo();
~Foo();
void f(void) {
inner();
}
};

class Foo1 : public FooBase {
void inner() {}
}

class Foo2 : public FooBase {
void inner() {}
}

int main()
{
Foo * foo1 = new Foo1();
foo1->f();
Foo * foo2 = new Foo2();
foo2->f();
return 0;
}

关于c++ - 如何在 C++ 中创建指向(或引用)同一类的另一个成员函数的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42770434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com