对于问题的实质性更改感到抱歉,请参阅上面的修改。
我正在寻找一种可读的方法,使用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&amp;塞特作为公共插槽,坏主意?
我正在把所有的getter和setter都写成公共插槽。实际上我只使用setter作为插槽,但是将它们彼此靠近写一个可增强的可读性。
这是个坏主意吗?有副作用吗?
答案 0 :(得分:2)
我说这是一个坏主意,因为它毫无意义,因此它会引发“wtf”(这通常是代码错误的标志)。
这是没有意义的,因为Qt信号不能返回值,而getter的唯一目的是返回一个值。所以制作getters插槽毫无意义。
我当然只谈论吸气剂。 Setter完全没问题(也很有用)作为插槽。
此外,一个类定义的每个元方法都有一些内存开销(并且在建立连接时可能会有一些性能开销,但不确定)。不多,但要记住这一点。
答案 1 :(得分:1)
除了额外的代码生成,您将没有任何副作用。每个插槽都会向类元信息添加一些数据+向moc生成的文件中添加一些代码。
您还可以使用Q_SLOT宏标记setter。并将两者放在同一个地方。