gpt4 book ai didi

c++ - 在 if 条件下调用构造函数作为逗号表达式的一部分?

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

这是我的代码。

#include<iostream>
#include<string>


struct Sales_data {
Sales_data() = default;

std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};

int main()
{
bool a = true;
if (Sales_data item, a)
std::cout << a << std::endl;
}

我不知道为什么编译器告诉我表达式必须有 bool 类型(或者可以转换为 bool)。

最佳答案

因为它不是一个有效的语法。它被解释为两个变量的声明(因此 , 在这里不是逗号运算符),您不能在 if 条件中使用它。

在 C++17 中使用以下语法可以实现您正在尝试的操作:

if (Sales_data item; a)

在那之前,如果你想将一个变量限定在 if 范围内,你可以这样做:

if (a)
{
Sales_data item;
...
}

或者,如果您需要条件内的变量,您可以创建一个封闭范围:

{
Sales_data item;
if (item == ...)
{
...
}
} // item is destructed here

关于c++ - 在 if 条件下调用构造函数作为逗号表达式的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40151126/

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