gpt4 book ai didi

c++ - 写入 const API 函数中的成员变量 (C++)

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:55 24 4
gpt4 key购买 nike

我正在 QT GUI 项目中编写自定义 QValidator,我的理解是我需要扩展 QValidator 类,因为:

void setValidator(const QValidator *);

需要传递一个 QValidator 子类。问题是函数:

virtual QValidator::State validate(QString& input, int& pos) const Q_DECL_OVERRIDE;

是const,但是我需要在我的子类中写入一个验证状态,而且由于这个const属性,我不能写入任何成员变量。我怎样才能绕过这个 API 约束?

我正在做这样的事情:

QValidator::State IPv4Validator::validate(QString &input, int &pos) const
{
auto validationResult = QRegExpValidator::validate(input, pos);
// custom logic here:
myMemberVariable = something(validationResult);
// more logic
// more logic
// more logic

return validationResult;
}

提前致谢!

最佳答案

您可以通过声明成员变量mutable 或使用const_cast(不安全)在const 函数中写入成员变量。

struct A {
void foo() const {
a = 3;
const_cast<A*>(this)->b = 4;
}

mutable int a;
int b;
};

关于c++ - 写入 const API 函数中的成员变量 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249675/

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