C++未使用的变量警告,即使我在函数结束时返回它

C++ unused variable warning even when I returned it at the end of function

本文关键字:函数 结束 返回 未使用 变量 警告 C++      更新时间:2023-10-16
Table::Table(int n): maxGuests(n)
{
    int numGuests = 0;
}
int Table::maxOccupancy(void)
{
    return maxGuests;
}
int Table::currentOccupancy(void)
{
    return numGuests;
}

如上面的代码所示,即使在访问器末尾返回它后,我也会收到未使用的numGuests警告。为什么会这样呢?

谢谢:)

在代码中

Table::Table(int n): maxGuests(n)
{
int numGuests = 0;
}

定义了局部变量numGuests,该变量不是类属性。这在任何地方都没有使用。因此,您会收到警告。 删除语句中的int int numGuests = 0;应该可以解决此问题。

或者更好的是,您可以更新代码以将此属性包含在初始值设定项列表本身中,如下所示:

Table::Table(int n) : maxGuests(n), numGuests(0)
{
}

代码段中的局部变量numGuests

Table::Table(int n): maxGuests(n)
{
    int numGuests = 0;
}

尚未使用。大概你想要的

struct Table
{
    ...
    int numGuests = 0;      // default value
    const int maxGuests;
    Table(int n) : maxGuests(n) {}
};

创建与类成员同名的局部变量。只需删除int即可获得所需的内容:

Table::Table(int n): maxGuests(n)
{
    numGuests = 0;
}

您正在创建一个变量,该变量"隐藏"了您尝试分配的属性。我不确定为什么您在这里使用两种完全不同的初始化方法,但您可以简化代码并修复错误,如下所示:

Table::Table(int n) : maxGuests(n), numGuests(0)
{
}

只要可行,就像这样初始化属性。在代码中执行此操作通常保留在不清楚将分配什么值、需要进行一些计算或需要委托给函数来执行此操作的情况。