Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从另一个类调用函数指针_C++ - Fatal编程技术网

C++ 从另一个类调用函数指针

C++ 从另一个类调用函数指针,c++,C++,在无序的_多重映射中存储的对象中调用未赋值函数指针时遇到问题 Listener.h 信使 然而,当试图编译时,我得到一个错误C2228:“.fun1”的左边必须有class/struct/union 其思想是这些类是继承的,fun1可以被分配给不同对象的函数,然后可以通过post从订阅特定post类型的其他对象调用这些函数您需要额外的取消引用,即it->second->fun1 v1;。equal_range返回迭代器对。它->秒->fun1 v1;错误结果:表达式必须具有指针类型抱歉有高级时刻

在无序的_多重映射中存储的对象中调用未赋值函数指针时遇到问题

Listener.h

信使

然而,当试图编译时,我得到一个错误C2228:“.fun1”的左边必须有class/struct/union


其思想是这些类是继承的,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;
};