gpt4 book ai didi

c++ - 将参数传递给方法 C++

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:58 26 4
gpt4 key购买 nike

我有 Java 方面的经验,因此我决定研究 C++。要做到这一点,我想我应该通过一些我以前做过的早期(基本)Java 示例,并将它们转换成 C++。基本上我有两个类,'main' 和 'Conversion'

转换会将英制单位转换为公斤。

main 获取用户输入。我正在尝试做的是将 2 个 double 值和两个字符串从 main 传递到转换中的方法 convert 但我收到错误

缺少';'在下面的方法调用的 ',' 之前( unit1 和 unit 2 是双变量)然后另外两个是字符串

   Conversion.convert(unit1, unit2, sUnit1, sUnit2);

这应该在转换中将 4 个参数发送到此方法。

void convert(double unit1, double unit2, std::string sUnit1, std::string sUnit2)
{
double result1 = calculate(unit1, sUnit1);
double result2 = calculate(unit2, sUnit2);
print(result1+result2);
}

知道为什么会抛出错误吗?还要说如果你需要更多代码,我相信这很明显,但也许你可以从我的代码中看出我更习惯于 Java。

最佳答案

你不能像这样在类上调用方法。 convert 是一个静态方法,在这种情况下,您可以这样调用它:

Conversion::convert(unit1, unit2, sUnit1, sUnit2);

或者它是一个成员函数,在这种情况下,您需要在 Conversion 的实例上调用它:

Conversion c;
c.convert(unit1, unit2, sUnit1, sUnit2);

请注意,与 Java 不同,在 C++ 中您可以拥有“自由”函数,即您不必将它们放在类中。这些情况下的常见做法是将函数放在命名空间中:

namespace Conversions
{
void convert(double d1, double d2, std::string s1, std::string s2) { ... }
}

然后您可以像调用静态方法一样调用它:

Conversions::convert(unit1, unit2, sUnit1, sUnit2);

另请注意,除非您要复制传递给函数的 std::strings,否则最好通过 const 引用传递以避免不必要的复制:

void convert(double d1, double d2, const std::string& s1, const std::string& s2);

这同样适用于 double ,您可以通过 const 引用传递它们,但考虑到可能复制 double 的成本,这几乎不值得。

最后,main是 C++ 和 C 中一个非常特殊的函数的名称,因此您应该避免将它用于类名。它不是关键字,但仍然可能令人困惑。

关于c++ - 将参数传递给方法 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028332/

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