template <class T>
class FContainer : public QObject
{
public:
    FContainer();
    inline void append(const T &t);
    inline void clear();
    inline void remove(const T &t);
    inline const T& at(int index) const { return m_list[index]; }
    inline const T& first() const { return m_list.first(); }
    inline const T& last() const { return m_list.last(); }
    inline int indexOf(const T &t){ return m_list.indexOf(t); }
    inline int size() { return m_list.size(); }
signals:
    void appended(const T &t);
    void cleared();
    void removed(const T &t);
    void updated();
private:
    QList<T> m_list;
};
class FSystem
{
public:
    inline const FContainer<FMaterial>& materials() const { return m_materials; }
    inline const FContainer<FObject>& objects() const { return m_objects; }
    inline FContainer<FMaterial>& materials() { return m_materials; }
    inline FContainer<FObject>& objects() { return m_objects; }
    static FSystem* Instance() { return m_instance; }
private:
    FSystem();
    FContainer<FMaterial> m_materials;
    FContainer<FObject> m_objects;
    static FSystem *m_instance;
};
I am having a probem about using QObject classes as a member of a class. Compiler says:
FSystem.obj:-1: error: LNK2019: unresolved external symbol "public: __cdecl FContainer::FContainer(void)" (??0?$FContainer@VFMaterial@@@@QEAA@XZ) referenced in function "private: __cdecl FSystem::FSystem(void)" (??0FSystem@@AEAA@XZ)
FContainer Constructor Here
template <class T>
FContainer<T>::FContainer()
    : QObject()
{
}
And FSystem Constructor Here:
FSystem::FSystem() { }
 
     
    