gpt4 book ai didi

c++ - 在 Vector 内的对象中调用函数指针

转载 作者:行者123 更新时间:2023-11-30 01:10:16 25 4
gpt4 key购买 nike

我正在尝试实现观察者和主题设计模式...

我有一个对象 Subject,带有指向观察者的指针 vector 。每个观察者都有一个指向函数的指针。怎么调用它?

在这个类中,定义了我要调用的函数

class functions_class
{
static bool getVal(){
return true;
}
};

在这个类中,定义了包含观察者的 vector

class Subject
{
vector<Observer*> mViews;

public:
void addObserver(Observer *o)
{
mViews.push_back(o)
}
};

在这个类中,存放的是函数指针。有调用这个指针的函数

class Observer
{
typedef bool(*boolPtr)(void);
boolPtr mPtr;

Observer(boolPtr ptr)
{
mPtr = ptr;
}

bool call()
{
return (mPtr)();
}
};

这是创建对象的地方

    Subject s;
Observer o(functions_class::getVal);
s.addObserver(&o);

问题…………如何在观察者中调用函数指针?我在观察者中使用了一个通用函数,但我无法让它工作。

我试过:

(s.mViews[0].call)()

有什么想法吗?

是否也可以将函数调用的输出转换为 uint32_t?

最佳答案

什么是 s.m_views[0]?那么,根据显示的代码,m_views 类成员是一个

vector<Observer*> mViews;

因此,s.m_views[0] 为您提供了一个Observer *

因此,从逻辑上讲,假设这是一个指针,那么:

s.m_views[0]->call()

这会调用成员函数。

关于c++ - 在 Vector 内的对象中调用函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341476/

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