gpt4 book ai didi

c++ - 作为非静态成员变量的默认参数

转载 作者:可可西里 更新时间:2023-11-01 18:19:55 29 4
gpt4 key购买 nike

我想创建一个类,它有两个整数成员变量,以及一个有两个可选参数的函数。如果提供了这些参数,函数返回它们的总和;如果未提供这些参数,则该函数返回其两个成员变量的总和。

代码如下:

class Foo
{
private:
int x_;
int y_;
public:
Foo(int x, int y) : x_(x), y_(y){}
int Bar(int a = x_, int b = y_)
{
int z = a + b;
return z;
}
};

但是,我得到以下编译错误:

invalid use of non-static data member 'Foo::x_'
int x_;
^
invalid use of non-static data member 'Foo::y_'
int y_;
^

这表明成员变量必须是静态的才能将它们用作函数中的默认参数。但我不希望它们是静态的...

解决方案是什么?

最佳答案

重载:

int Bar()
{
return x_ + y_;
}

int Bar(int x)
{
return x + y_;
}

int Bar(int x, int y)
{
return x + y;
}

感谢@Jarod42 的改进:

int Bar(int a, int b)
{
return a + b;
}

int Bar(int a)
{
return Bar(a, y_);
}

int Bar()
{
return Bar(x_, y_);
}

与两个数字求和的原始问题相比,您尝试解决的实际问题更有可能从这种重构中获益。此行为显然与您希望通过默认参数实现的行为相同。

关于c++ - 作为非静态成员变量的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32399730/

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