我在unordered_multimap中存储的对象中调用未分配的函数指针时遇到问题。
Listener.h
class Listener
{
public:
Listener(){}
void( *fun1 )(Variant) = NULL;
};
Messenger.h
class Messenger
{
public:
void post( std::string type, void( *function )(Variant v1), Variant v1 ) {
auto its = m_listeners.equal_range( type );
for( auto it = its.first; it != its.second; it++ )
it->second.fun1( v1 );
}
protected:
std::unordered_multimap<std::string, Listener> m_listeners;
};
然而,在尝试编译时,我收到错误C2228: left of '.fun1' must have class/struct/union
。
这个想法是这些类是继承的,fun1
可以分配给不同对象的函数,然后可以通过post
从订阅某个帖子类型的其他对象调用1} p>