gpt4 book ai didi

c++ - 指向派生类方法的指针列表

转载 作者:行者123 更新时间:2023-11-28 03:01:25 26 4
gpt4 key购买 nike

我正在尝试用 C++ 创建以下内容:

class A {
SpecialContainer<SpecialType> list_of_callables;

void add_to_container(SpecialType *method); // adds method to the SpecialContainer
};

class B : public A {
void method_1();
};

这样可以将指向 method_1 的指针插入到容器中,例如,

a.add_to_container(&B::method_1)

因此在 A 内部的迭代中被调用,例如使用

# pseudo code
for item in container
(this->*item)();

(注意 A 没有定义 method_1)。

我的问题是:即使使用 void*、boost 库或一些C/C++ 破解?如果是,如何?

(很抱歉,如果答案显而易见,我最近刚从 Python 回来)。


到目前为止,我尝试使用

typedef void (A::*SpecialType)();

SpecialContainer 一个 std::vector,但自 method_1 以来没有成功显然是来自 B,即我必须打电话

add_to_container(&B::method_1)

这是一个无效的编译。

最佳答案

add_to_container(&B::method_1)

这仅在 method_1 是 B 的静态成员时有效。以下代码对我有效(除了链接和 std::vector 而不是您的容器类):

class A {
public:
typedef void (*SpecialType)();

std::vector<SpecialType> list_of_callables;

void add_to_container(SpecialType method);
};

class B : public A {
public:
static void method_1();
};

int main()
{
A a;
a.add_to_container(&B::method_1);
return 0;
}

如果您希望函数绑定(bind)到 B 的特定实例,请查看 std::bind如果你使用的是 C++11,或者 boost::bind对于旧的 C++。

关于c++ - 指向派生类方法的指针列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20743071/

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