簡體   English   中英

如何使用setter作為插槽在Qt中編寫可讀的c ++ getter和setter

[英]How to write readable c++ getter and setter in Qt with setter as slot

對於問題的重大更改感到抱歉,請參閱上面的編輯。

我正在尋找一種可讀的方法來使用setter作為SLOT在我的C ++類中編寫getter和setter。

因為我的習慣,我習慣於在課堂底部寫下吸氣劑和制定者,並且在吸氣劑附近吸氣。

以下是我現在的寫作方式:

#include <QObject>

class MyClass : public QObject
{
    Q_OBJECT

public:
    MyClass(...);
    ~MyClass();

    void myPublicMethod();

public slots:
    void onEvent(...);

protected:
    int myVal;

//---------------------------------------------- getter and setter
public slots:
    void setVal(int v);
    const int getVal();

};

但是上一個問題的答案(參見編輯)指出了一些開銷(我並不在乎)以及不必要地使用插槽來獲取getter(這就是提出這個問題的動機),這可能會更糟對於那些使用這個類的人來說,看到一些沒有動力的插件來吸氣。

編輯:問題的重大變化。 它是:

標題:Qt getter&setter作為公共插槽,壞主意?

我正把所有的getter和setter都寫成公共插槽。 實際上我只使用setter作為插槽,但是將它們寫成彼此靠近,增強了可讀性。

這是一個壞主意嗎? 有副作用嗎?

我會說這是一個壞主意,因為它毫無意義,因此它會引發“wtf”(這通常是代碼錯誤的標志)。

這是沒有意義的,因為Qt信號不能返回值,而getter的唯一目的是返回一個值。 因此制作getters插槽毫無意義。

當然,我只是在談論吸氣劑。 Setters非常好(和有用)作為插槽。

此外,一個類定義的每個元方法都有一些內存開銷(並且在建立連接時可能會有一些性能開銷,但不確定)。 不多,但要記住這一點。

除了額外的代碼生成,您將沒有任何副作用。 每個插槽向類元信息添加一些數據+向moc生成的文件添加一些代碼。

您還可以使用Q_SLOT宏標記setter。 並將兩者放在同一個地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM