kplato compile problem on windows
Jan Hambrecht
jaham at gmx.net
Mon Jan 24 08:52:23 GMT 2011
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
More information about the calligra-devel
mailing list