gpt4 book ai didi

用于添加默认参数的 C++ 特定语法

转载 作者:行者123 更新时间:2023-11-27 23:27:11 25 4
gpt4 key购买 nike

假设您的代码库中有一个函数 X()。它需要三个参数。原型(prototype)看起来像这样:

在头文件中:

void X(string a, int b, string c);

在 .cpp 文件中:

void myclass::X(string a, int b, string c) {
...
}

假设您正在向代码库中添加内容,并且特别需要传递第四个参数到 X 只有一个地方。 3 参数调用都需要保留在原位。您希望避免破坏对 X 调用的所有 3 参数版本。

我已经尝试使用建议 here但这不起作用。答案一仍然产生找不到匹配函数的错误。尝试执行 answer 2 suggestions 会产生错误,我无法重载该函数。具体来说,我根据该链接中的答案 2 尝试这样做:

在头文件中:

void X(string a, int b, string c, string d);    
void X(string a, int b, string c, string d="default_value");

非常感谢任何有关如何在不破坏所有 3 参数调用的情况下正确添加单个 4 参数调用的建议 - 谢谢!

最佳答案

只需添加一个新的原型(prototype),保持之前的原型(prototype)不变:

string X(string a, int b, string c);    
string X(string a, int b, string c, string d);

您不能为新参数分配默认值,因为这会导致歧义:编译器不可能知道您要调用哪个方法。

或者您可以用一个新的定义替换旧的定义,采用一个额外的参数,并为其设置一个默认值。但在这种情况下,您必须删除之前的函数声明。

提示:

根据你的语法,我认为你正在使用

using namespace std;

在你的标题中。这是不好的做法。这样做会在您包含此 header 的任何地方使用 std 命名空间填充全局命名空间。您应该删除此指令并限定您的类型:std::string 而不是 string

关于用于添加默认参数的 C++ 特定语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496113/

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