2017-03-03 5 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

Downvoted。理由:スタックオーバーフローはプログラミングを教えるためのものではありません。 – IInspectable

+0

エラーが多すぎます。あなたは、オンラインで多くのコースの一つを取るか、またはC + +で本を手に入れてください。あなたのコードの文法は、ある意味では意味がありません。 –

答えて

1

問題の大部分はクラスprocessChoiceにあります。

まず、あなたのクラスの関数宣言で指定されたパラメータが故障している:ここで

は、あなただけの4つのデータタイプではなく、変数を指定しているここで、このようなエラーの一部です。 Keeでは、これらは別の関数から渡されたデータを格納する変数です。これを行うには、これらの変数を上記の行に宣言する必要があります。関数内で特定できる特定の名前の変数です。関数宣言に次の行を含める必要があります。

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

これは別の問題を引き起こします。あなたの関数ヘッダーは宣言時に異なり、そのヘッダーは定義時に異なります。コンパイラはそれを2つの異なる関数と見なします。したがって、宣言して定義する際には、関数ヘイダーを同じように保つ必要があります。

第二、forループ、あなたの関数内の構文エラーがあります。

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

まず、ループの条件文の構文から判断すると、それはDO-whileループであるべきではなく、 forループ。第2に、cout << endl;はforループの条件文の中にあってはなりません。それは関数の残りの部分で実装する必要があります。第3に、条件ステートメントの最後にセミコロンを入れない。それはコンパイラに、ボディがない空のループであることを伝えます。あなたのループは次のようなものでなければなりません:

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(); 

その後、我々は(あなたが上記の私のノートに従っている場合2)4つのパラメータを渡す必要があり、それは何です:今

、我々は次の宣言を持っている場合は、あなたの質問に取得しますこのコード行aの関数名の隣に角括弧があります。関数に値を渡すには、単純に次のようにします(ここでは2つのパラメータを渡していますが、これまで定義されていたパラメータはいくつか渡すことができます)。

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

ユーザ名とパスワードを指定する2つの入力パラメータがあります。渡されるパラメータを区別するためには、構文をコンマで区切る必要があります。変数を引数として渡すこともできます。ただし、これらの変数が初期化されていることを確認してください。

これは長い投稿ですので、気付かなかったいくつかのエラーが発生している可能性があります。私が気づいた他の間違いがある場合は、コメントに私に知らせてください。

幸運を祈る!

関連する問題