Type()); QJsonDocument -6ren">
gpt4 book ai didi

c++ - 预期类型更改时如何获得编译器错误

转载 作者:行者123 更新时间:2023-11-27 23:54:03 26 4
gpt4 key购买 nike

我的应用程序中有一些简化形式的代码:

QVariantMap deviceMap;
deviceMap.insert("Model", pDevice->Type());
QJsonDocument jsonDoc = QJsonDocument::fromVariant(deviceMap);
QString str = jsonDoc.toJson(QJsonDocument::Compact);

我刚刚发现了一个错误,其中有人更改了函数 Type() 来自:

QString Type() const;

到:

int Type() const;

显然 Qt 对此没有问题,只是将其转换为 JSON,这导致了错误。但是我宁愿在这样更改类型时遇到编译器错误。如果将来函数的返回值发生变化,我该如何更改它,以便我得到编译器错误?

最佳答案

最简单的解决方法是在代码中为 Type() 的返回值包含一个 static_assert。但当然,您不想在任何地方都这样做。

static_assert( std::is_same<decltype(pDevice->Type()), QString>::value,
"Type mismatch, expected QString" );
deviceMap.insert("Model", pDevice->Type());

关于c++ - 预期类型更改时如何获得编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43991332/

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