[英]Passing parameters to a method C++
我有Java方面的經驗,因此決定研究C ++。 為此,我認為我會講一些以前做過的早期(基本)Java示例,然后將它們轉換為C ++。 基本上我有兩個類,“主”和“轉化”
轉換后,英制尺寸將轉換為千克。
main獲取用戶輸入。 我想做的是將2個雙精度值和兩個字符串從main傳遞給轉換中的方法convert
但我收到了錯誤
missing ';' before ','
missing ';' before ','
下面的方法調用(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);
同樣適用於雙打,您可以通過const引用傳遞它們,但是考慮到可能復制雙打的代價,這幾乎不值得。
最后, main
是C ++和C中一個非常特殊的函數的名稱,因此應避免將其用作類名。 它不是關鍵字,但仍然可能造成混淆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.