PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Qt/Win32] QValueList<> in seperater DLL



sohler
05-07-2005, 12:10
Hallo,

ich habe eine Klasse MyObject definert. Diese hat als privaten Member eine QValueList von ListItems. Beide Klassen sind in einer seperaten DLL.

Beim kompilieren kommt die Warning:

warning C4251: 'm_List' : class 'QValueList<class ListItem>' needs to have dll-interface to be used by clients of class 'MyObject'


Googlen hat ergeben, dass man für die QValueList auch ein DLL-Interface erstellen muss.

Also habe ich jetzt folgenden Code:



#ifdef GEN_DLL_EXPORT
#define DLL_EXPORT __declspec (dllexport)
#else
#define DLL_EXPORT __declspec (dllimport)
#endif

class DLL_EXPORT ListItem
{
...
};

class DLL_EXPORT MyObject
{
public:

...

private:

QValueList<ListItem> m_List;
};

// MOC_SKIP_BEGIN
template class DLL_EXPORT QValueList<ListItem>;
// MOC_SKIP_END


Jetzt kommt aber der Fehler:

error C2678: binary '==' : no operator defined which takes a left-hand operand of type 'const class ListItem' (or there is no acceptable conversion)

Der Fehler verschwindet, wenn ich den geforderten Operator selber außerhalb der Klasse implementiere:



inline bool operator==(const ListItem& a, const ListItem& b)
{
...
}


Die Fragen sind jetzt:
Warum muss ich den Operator== selber implementieren? Warum wird nicht der Standard-Operator== (bitweiser Vergleich) genommen?
Warum muss ich für die "normale" Verwendung der QValueList diesen Operator nicht selber implementieren?

Gruß,
S.Ohler