gpt4 book ai didi

c++ - 根据特殊条件定义函数类型

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

我想问一下,声明函数的正确且简洁的方法是什么,它的返回类型取决于条件。

这就是我在如此糟糕的情况下解决这个问题的方法(没有创建函数):

const QAudioFormat::SampleType signalSampleType;
typedef decltype(signalSampleType == QAudioFormat::Float ? float() : (signalSampleType == QAudioFormat::SignedInt ? int() : unsigned int())) sampleType;
std::vector<sampleType> rawSignalData;

这样可以吗,或者是否有更好的方法来做这些事情?

最佳答案

这是 std::conditional 的用例

using sampleType = typename std::conditional<
signalSampleType == QAudioFormat::Float,
float,
typename std::conditional<
signalSampleType == QAudioFormat::SignedInt,
int, unsigned int>::type
>::type;

使用 c++14 可以使它变得不那么丑陋:

using sampleType = std::conditional_t<
signalSampleType == QAudioFormat::Float,
float,
std::conditional_t<
signalSampleType == QAudioFormat::SignedInt,
int, unsigned int>
>

关于c++ - 根据特殊条件定义函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40956688/

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