ProgramingTip

Qt“비공개 양성소 :”이것은 무엇입니까?

bestdevel 2020. 11. 2. 08:11
반응형

Qt“비공개 양성소 :”이것은 무엇입니까?


나는 그것을 사용하는 방법을 이해하지만 그것의 구문은 나를 괴롭힌다. "비공개 제작자 :"이란 무엇입니까?

전에 클래스 정의에서 private 키워드와 : 사이에 서술을 본 적이 없습니다. 여기에 멋진 C ++ 마법이 있습니까?

그리고 여기에 예 :

 #include <QObject>

 class Counter : public QObject
 {
     Q_OBJECT

 public:
     Counter() { m_value = 0; }

     int value() const { return m_value; }

 public slots:
     void setValue(int value);

 ...

이름은 C ++의 Qt 특정 확장입니다. Qt의 전처리 기인 MOC (Meta-Object Compiler)를 통해 코드를 전송 한 후에 만 ​​컴파일됩니다. 설명서는 http://doc.qt.io/qt-5/moc.html참조 하십시오 .

편집 : Frank가 지적했듯이 moc는 연결에만합니다. 추가 키워드는 표준 전처리기로 # 정의됩니다.


같은 키워드는 public, privateQt는 무시됩니다. 모든 것이 공용이며 있습니다.


추천 상품을 추천하지 않을 것입니다. 비공개 주소를 connect.

신호를 private으로 선언하면이 클래스 만 관리 할 수 ​​있지만 함수 멤버 포인터에는 액세스 제한이 없음을 의미합니다 .

class A{
    private:
    void e(){

    }
    public:
    auto getPointer(){
        return &A::e;   
    }
};

int main()
{
    A a;
    auto P=a.getPointer();
    (a.*P)();
}

그 외에는 어떤 다른 답변 언급하는 것은 유효 너무 :
- 당신은 여전히 트릭 외부에서 개인 신호 와 슬롯을 연결할 수 있습니다
- signalsslots빈 매크로하고 언어 표준을 아프게하지 않습니다

참고 URL : https://stackoverflow.com/questions/9147636/qt-private-slots-what-is-this

반응형