创建模板类的std :: vector?

时间:2010-10-14 01:24:33

标签: c++ templates vector

我目前有一个使用模板参数的类。我需要一组这些。我怎么能这样做(没有提升)。 例如:

template <typename RET, typename T>
class AguiTimedEvent {
    RET (*onEvent)(T arg);
    double timeStamp;
public:
    RET call(T arg);
    bool expired();
    AguiTimedEvent();
    AguiTimedEvent(RET (*Timefunc)(T arg), double timeSec);
};

我需要这样的东西:

AguiTimedEvent t<int, int>(func, 5.0);
v.push_back(t);
...
v[0].call();

我实际上并不需要返回值,但我只是想让它更灵活。如果返回值导致问题,我可以将其限制为void函数,但是arg需要模板化。我能做什么?感谢

*我需要向量来处理任何类型,我需要一个数组,其中数组可以调度X Y的事件,而不仅仅是int int

2 个答案:

答案 0 :(得分:2)

std::vector<AguiTimedEvent<int, int> > v;

如果需要存储具有不同模板参数的不同AguiTimedEvent类型的对象,则需要创建基类(例如AguiTimedEventBase)并在vector中存储指针。

答案 1 :(得分:0)

我没有遇到以下代码的问题:

template <typename RET, typename T>
class AguiTimedEvent {
    RET (*onEvent)(T arg);
    double timeStamp;
public:
    RET call(T arg) {return 0;}
    bool expired() {}
    AguiTimedEvent() {}
    AguiTimedEvent(RET (*Timefunc)(T arg), double timeSec) {}
};

int func(int x) {return 0;}

int main()
{
    vector< AguiTimedEvent<int, int> > v;
    AguiTimedEvent<int, int> t(func, 5.0);

    v.push_back(t);

    return 0;
}