[英]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.