signals2:带有模板化参数的信号

时间:2013-02-19 23:48:27

标签: signals2

我正在为相机类设计基类。目的是使用信号通知客户新的可用图像。相机可能具有8位或16位像素。我试图按照以下方式对它们进行模板化:

#include <boost/signals2.hpp>
#include <boost/cstdint.hpp>

template<typename PX>
class ICamera
{
public:
    typedef PX pixel_type;
    typedef PX const *pFrame;

    typedef boost::signals2::signal<void (ICamera &cam, pFrame buffer)> CaptureSig;
    typedef CaptureSig::slot_type CaptureSlot;   /* error on this line */
    virtual boost::signals2::connection AddCaptureListener(CaptureSlot slot) = 0;
};

在MSVS 2008中,当我从ICamera<uint8_t>派生一个类时,slot_type上的typedef上存在编译错误,首先是:“缺少;在标识符CaptureSlot之前”。也就是说,此时未定义CaptureSig::slot_type

除了在每个派生类中定义信号和槽之外,还有办法超越这个吗?

更新: 它实际上不是引起问题的信号的参数,它是模板中信号定义的存在。如果信号的签名更改为固定类型,则会出现相同的错误。

0 个答案:

没有答案