Binary Compatibility Workarounds: Difference between revisions
Jump to navigation
Jump to search
Olivier M. (talk | contribs) No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
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++ Binary Compatibility Issues with C++]. | 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++ Binary Compatibility Issues with C++]. | ||
Specifically, the d-pointer technique is explained in much detail in [[D-Pointer|D-Pointer: What Private Implementation is and how it works]]. | |||
== Declaring a slot for private classes (d-pointer) == | == Declaring a slot for private classes (d-pointer) == |
Revision as of 11:29, 18 August 2015
This page describes some workarounds for keeping binary compatibility in patch releases. You should read the KDE reference: Binary Compatibility Issues with C++.
Specifically, the d-pointer technique is explained in much detail in D-Pointer: What Private Implementation is and how it works.
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