C++ 从另一个类调用函数指针
在无序的_多重映射中存储的对象中调用未赋值函数指针时遇到问题 Listener.h 信使 然而,当试图编译时,我得到一个错误C2228:“.fun1”的左边必须有class/struct/unionC++ 从另一个类调用函数指针,c++,C++,在无序的_多重映射中存储的对象中调用未赋值函数指针时遇到问题 Listener.h 信使 然而,当试图编译时,我得到一个错误C2228:“.fun1”的左边必须有class/struct/union 其思想是这些类是继承的,fun1可以被分配给不同对象的函数,然后可以通过post从订阅特定post类型的其他对象调用这些函数您需要额外的取消引用,即it->second->fun1 v1;。equal_range返回迭代器对。它->秒->fun1 v1;错误结果:表达式必须具有指针类型抱歉有高级时刻
其思想是这些类是继承的,fun1可以被分配给不同对象的函数,然后可以通过post从订阅特定post类型的其他对象调用这些函数您需要额外的取消引用,即it->second->fun1 v1;。equal_range返回迭代器对。它->秒->fun1 v1;错误结果:表达式必须具有指针类型抱歉有高级时刻,请删除第二个:it->fun1 v1;CNR:。在您的问题中发布编译的工具链和命令行,并确保您使用的是-std=c++11还是使用clang或gcc,这对我也适用-
class Listener
{
public:
Listener(){}
void( *fun1 )(Variant) = NULL;
};
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;
};