2017-03-03 72 views
-5

你好我想知道如何我可以在我的類的主參數調用函數?如何在我的類的參數中調用我的函數(C++)

class processChoice { 
public: 
    void processInput(string, int, string, int); 
}; 

void processChoice::processInput(string processInput_UN, 
           int processInput_PC, 
           string initial_UN, 
           int initial_PC) { 
    for (; (processInput_UN != initial_UN) || (processInput_PC != initial_PC); 
     cout << endl) { 

     cout << "Enter your username: " << flush; 
     cin >> initial_UN; 

     cout << "Enter your 4 digit pincode: " << flush; 
     cin >> initial_PC; 

     cout << endl; 

     if ((processInput_UN == initial_UN) && (processInput_PC == initial_PC)) { 
      cout << "Access granted!" << endl; 
     } else { 
      cout << "Username and/or pincode doesn't match, try again..." 
       << endl; 
    } 
} 

int main() { 

    userPinchoice Choice; 
    Choice.chooseUsername(); 
    Choice.choosePincode(); 

    cout << endl; 

    initial Values; 
    Values.initialUsername(); 
    Values.initialPincode(); 

    processChoice Input; 
    Input.processInput(); 

    return 0; 

我想在Input.processInput()的圓括號裏放什麼? 我一直在努力讓它工作,但我似乎無法訪問該功能。我是新來的,所以任何幫助都會受到歡迎。

在此先感謝!

+0

你在這裏有很多事情是不正確的。在處理函數/類之前,您可能想了解更多關於C++語法的知識。順便提一句,那些圓括號稱爲括號。 – bejado

+1

已下調。原因:堆棧溢出不是在這裏教編程。 – IInspectable

+0

錯誤太多。你應該在網上學習許多課程之一,或者在C++上獲得一本書。你的代碼的語法在某些方面沒有意義。 –

回答

1

你的問題的大部分在於processChoice。這裏有一些這樣的錯誤:

首先,在你的類中的函數聲明中指定的參數是錯誤的:

在這裏,你只給定了4種數據類型,而不是變量。 Kee記住,這些是存儲從另一個函數傳遞的數據的變量。爲了做到這一點,你需要在上面的行中聲明這些變量,具有特定名稱的變量可以在函數內標識。你應該在你的函數聲明中有這一行:

void processChoice::processInput(string processInput_UN, int processInput_PC, string initial_UN, int initial_PC) 

這帶來了另一個問題。你的函數頭部在聲明時是不同的,並且它的頭部在定義時是不同的。編譯器將其視爲2種不同的功能。因此,在聲明它並定義它時,應該保持函數headeer一致。

其次,你的函數內部的for循環有語法錯誤:

for (; (processInput_UN != initial_UN) || (processInput_PC != initial_PC); 
    cout << endl) { 

首先,從循環的條件語句的語法來看,它應該是一個do-while循環,而不是一個for循環。其次,cout << endl;不應該在for循環的條件語句中;它應該與其餘的功能一起實施。第三,在條件語句結尾處不要使用分號;它告訴編譯器,這是一個沒有主體的空循環。你的循環應該是這樣的:

do 
{ 
    cout << endl; // this is where you put the cout statement 

    // add rest of function code here 
} 
while ((processInput_UN != initial_UN) || (processInput_PC != initial_PC)) 

另一個側面說明,爲什麼你需要在你的函數4的輸入參數?您將密碼和用戶名作爲用戶的輸入,無需2個參數。喜歡的東西:

string initial_UN; 
int initial_PC; 

如果你只是在之前宣佈這個自己的函數中,do-while循環我上面建議的,那麼這消除了被參數這2個變量。現在

,讓你的問題,如果我們有如下聲明:

Input.processInput(); 

這時我們就需要通過4個參數(2如果你按照我上面的說明)它,那是什麼在這行代碼a中的函數名旁邊的括號。爲了給函數傳遞一個值,簡單地做下面的事情(我只在這裏傳遞2個參數,你可以通過你在類中定義的參數有多少,而不是更少或者更少):

Input.processInput("Username", "password"); 

有2個輸入參數指定用戶名和密碼應該是什麼。爲區分傳遞的參數,語法需要用逗號分隔它們。您也可以將變量作爲參數傳遞;但是,請確保您已初始化這些變量。

這是一篇很長的文章,所以我可能犯了一些我沒有注意到的錯誤。如果我注意到其他任何錯誤,請在評論中通知我。

祝你好運!

相關問題