mardi 12 juin 2018

Calling function as a template class parameter

#include <iostream>
#include <list>
#include <functional>

class Base
{
public:
    virtual void foo() = 0;
    virtual ~Base(){}
};

template<typename T>
class TClass:public Base
{
public:
    TClass(T value) :value(value) {}
    T value;
    void foo()
    {
        //if(value is std::function)
        //call function;
    }
};


int main()
{

    std::list<Base*>l;
    l.push_back(new TClass<int>(12));
    l.push_back( new TClass<std::function<void(void)>>([]()->void {std::cout << "func1" << std::endl; }));

    for(auto i=l.begin();i!=l.end();i++)
    (*i)->foo();

    for(auto i=l.begin();i!=l.end();i++)
    delete (*i);

    system("pause");
    return 0;
}

I want create list with any parameters and if that is function call this.

Aucun commentaire:

Enregistrer un commentaire