Объявление слотов частными означает, что вы не сможете ссылаться на них из контекста, в котором они являются частными, как любой другой метод.Следовательно, вы не сможете передать адрес приватных слотов на connect
.
. Если вы объявляете сигнал как закрытый, вы говорите, что им может управлять только этот класс, но указатели на функции не имеют доступа.ограничения :
class A{
private:
void e(){
}
public:
auto getPointer(){
return &A::e;
}
};
int main()
{
A a;
auto P=a.getPointer();
(a.*P)();
}
Кроме того, то, что упоминается в других ответах, также допустимо:
- вы все еще можете подключать частные сигналы и слоты извне с помощью трюков
- signals
slots
являются пустыми макросами и не нарушают языковой стандарт