簡體   English   中英

將參數傳遞給方法C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM