0

次の Event クラスを作成しました。

Event.h

#ifndef EVENT_H
#define EVENT_H

#include<string>

template<typename T>
class Event
{
    public:
        T fnktptr; //Error: field ‘Event<int()>::fnktptr’ invalidly declared function type
        Event();
        virtual ~Event();
};

#endif // EVENT_H

イベント.cpp

#include "Event.h"

template<typename T>
Event<T>::Event()
{
    //ctor
}
template<typename T>
Event<T>::~Event()
{
    //dtor
}
// No need to call this TemporaryFunction() function,
// it's just to avoid link error.
void TemporaryFunction ()
{
    Event<int> TempObj;
}

今、私は次のコードでそれをテストし、動作します:

Event<int> event;
int t = 5;
event.fnktptr = t;

しかし、最後に、次のようなファンクターで使用したいと思います。

Event<decltype(consumeInt)> event;
event.fnktptr = consumeInt;

しかし、Event.h ファイルでエラーが発生します。

T fnktptr; //Error: field ‘Event<int()>::fnktptr’ invalidly declared function type
4

1 に答える 1