Binary Compatibility Workarounds: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 11: | Line 11: | ||
Use a Q_PRIVATE_SLOT: | Use a Q_PRIVATE_SLOT: | ||
<code> | <code> | ||
class A: public QObject | |||
{ | |||
Q_OBJECT | |||
… | |||
private: | |||
Q_PRIVATE_SLOT(d_func(), void myPrivateSlot()) | |||
}; | |||
/* in .cpp file | /* in .cpp file */ | ||
void APrivate::myPrivateSlot() {…} | |||
#include "moc_a.cpp" | |||
</code> | |||
Pitfalls to avoid: | |||
''' Don't include `a.moc`, but `moc_a.cpp` in your .cpp file | |||
* Q_PRIVATE_SLOT takes the complete signature of the private slot, not just its name |
Revision as of 10:19, 25 February 2015
Binary Compatibility Workarounds
This page describes some workarounds for keeping binary compatibility in patch releases.
You should read the KDE reference: http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++
Declaring a slot for private classes (d-pointer)
Use a Q_PRIVATE_SLOT:
class A: public QObject
{
Q_OBJECT
…
private:
Q_PRIVATE_SLOT(d_func(), void myPrivateSlot())
};
/* in .cpp file */
void APrivate::myPrivateSlot() {…}
#include "moc_a.cpp"
Pitfalls to avoid:
Don't include `a.moc`, but `moc_a.cpp` in your .cpp file
- Q_PRIVATE_SLOT takes the complete signature of the private slot, not just its name