gpt4 book ai didi

c++ - 如何在 Qt 中以 setter 作为插槽编写可读的 c++ getter 和 setter

转载 作者:行者123 更新时间:2023-11-30 02:49:12 25 4
gpt4 key购买 nike

对于问题的实质性变化,我们深表歉意,请参阅上面的修改。

我正在寻找一种可读的方式来使用 setter 作为 SLOT 在我的 C++ 类中编写 getter 和 setter。

因为我的习惯我习惯把getter和setter写在类的底部,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 槽(这是提出这个问题的动机)对于使用此类并看到一些无动机的 getter 插槽的人来说可能会更糟。

编辑:问题发生重大变化。这是:

标题:Qt getter & setter as public slot,坏主意?

我将所有的 getter 和 setter 写成公共(public)槽。实际上我只使用 setter 作为插槽,但将它们写在彼此附近以增强可读性。

这是个坏主意吗?有什么副作用吗?

最佳答案

我会说这是个坏主意,因为它毫无意义,因此会引发“wtf”(这通常是错误代码的标志)。

这毫无意义,因为 Qt 信号不能返回值,而 getter 的唯一目的是返回一个值。所以制作 getters 插槽是没有意义的。

当然,我只是在谈论 setter/getter 。 Setter 作为插槽非常好(而且很有用)。

此外,类定义的每个元方法都有一些内存开销(建立连接时可能还有一些性能开销,不确定)。不多,但要记住这一点。

关于c++ - 如何在 Qt 中以 setter 作为插槽编写可读的 c++ getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21454791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com