小编zad*_*gus的帖子

模糊错误:C++ 11使用可变参数模板多重继承

这段代码的Objectif是创建一个包围diffent模板设计(一个实现与总是相同的处理程序工作),但有了这个尝试我有以下错误"错误:请求成员'pushEvent'是模棱两可的"我不明白(消息底部错误的详细信息)

template<typename T>
struct EventHandler {
    EventHandler() {}

    inline void pushEvent(T & msg) {
    printf("pushEvent %s", typeid(T).name());
        q_.push(msg);
}

protected:
    std::queue<T> q_;
};
Run Code Online (Sandbox Code Playgroud)

deferend模板的包装器(将添加一些方法来处理不同类型的事件

template<typename... EventHandler>
    struct _EventsHandler : EventHandler... {

};
Run Code Online (Sandbox Code Playgroud)

// usage sample:我们创建将实例化事件管理器的类型

 using EventHandlerType = EventsHandler<EventHandler<int>,EventHandler<float>,EventHandler<char>>;

int main(void) {
    EventHandlerType test;

    int msp = 1;
    test.pushEvent(msp);
}
Run Code Online (Sandbox Code Playgroud)

我不明白模糊错误,因为msp类型是int,应该提供信息来解决歧义?

error: request for member 'pushEvent' is ambiguous
  test.pushEvent(msp);
       ^
note: candidates are: void _EventHandler<T>::pushEvent(T&) [with T = char]
     inline void pushEvent(T & msg) {
                 ^
note: void _EventHandler<T>::pushEvent(T&) [with …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates c++11

2
推荐指数
1
解决办法
209
查看次数

标签 统计

c++ ×1

c++11 ×1

templates ×1

variadic-templates ×1