On 24.01.2011 08:57, Pierre Stirnweiss wrote: > As some of may know, I am trying to get Calligra to compile on Windows > MSVC2010. I have encountered a couple of problems, which were easy > enough to solve (with the help of SaroEngels). > The one I am facing now is apparently way more complicated: > > in kplato/libs/kernel/kpappointment.h we have the following: > > class KPLATO_EXPORT AppointmentInterval {} > class KPLATO_EXPORT AppointmentIntervalList: public QMultiMap<QDate, > AppointmentInterval> {} > > This construct yields the error C2487: > 'identifier' : member of dll interface class may not be declared with > dll interface > You can declare a whole class, or certain members of a non-DLL interface > class, with DLL interface. You cannot declare a class with DLL interface > and then declare a member of that class with DLL interface. > > > According to SaroEngels, both QDate and AppointmentInterval are > problematic here. A solution he proposed to this is to have the following: > > class KPLATO_EXPORT AppointmentInterval; > > class AppointmentIntervalBase : public QMultiMap<QDate, AppointmentInterval> > > class KPLATO_EXPORT AppointmentIntervalList : public AppointmentIntervalBase > > > Any further thought on this?
I would try to change the class from <Is a QMultimap> to <Has a QMultimap>. If I remember correctly from a short look yesterday, nowhere in the code are the QMultimap methods of AppointmentIntervalList used, beside within the implementation of AppointmentIntervalList itself. So maybe using the follwing construct will work: class AppointmentIntervalBase { // all your existing methods go here private: QMultiMap<QDate, AppointmentInterval> m_data; }; Ciao Jan _______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel