gpt4 book ai didi

c++ - 警告 : expression result unused when returning an object with a two argument constructor

转载 作者:搜寻专家 更新时间:2023-10-31 00:51:30 25 4
gpt4 key购买 nike

我有一个类代表用于 DSP 处理的复值样本缓冲区。对于一些看起来干净的代码,此类具有以下静态成员函数:

template <typename SampleType>
class SampleBufferComplex
{
public:

...

/** Helper to create one Sample of the buffers SampleType in templated code */
template <typename OriginalType>
static std::complex<SampleType> castToSampleType (OriginalType re, OriginalType im) {return (static_cast<SampleType> (re), static_cast<SampleType> (im)); }

}

这按预期工作,但是 clang 抛出以下内容

Warning: "expression result unused". 

...

Note:(67, 75) in instantiation of function template specialization 'SampleBufferComplex<float>::castToSampleType<double>' requested here

...

我看不到此处未使用任何表达式结果的地方,但我想编写 100% 无警告代码。我是否遇到了一些奇怪的编译器错误,或者我是否忽略了这里非常明显的事情?任何指点表示赞赏!

最佳答案

在表达式中

return (static_cast<SampleType> (re), static_cast<SampleType> (im));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

突出显示的转换表达式的结果未使用。返回语句可以简化为(假设第一次转换没有副作用):

return static_cast<SampleType> (im);

不过,我怀疑这不是您的意图(启用警告是件好事,是吗?)。也许您也打算使用实部?在那种情况下,您可能应该改为:

return {static_cast<SampleType> (re), static_cast<SampleType> (im)};

关于c++ - 警告 : expression result unused when returning an object with a two argument constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54983899/

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