1

メインのみを実行しています。出力は「単語を入力してください」ですが、オブジェクト/クラスは完全に無視されます

私は初心者です。これが不適切に簡単な質問である場合は申し訳ありません。これは、リリース モードとデバッグ モードの両方で発生します。

#include <iostream>

using namespace std;

class WordGame
{
public:

    void setWord( string word )
    {
        theWord = word;
    }
    string getWord()
    {
        return theWord;
    }
    void displayWord()
    {
        cout << "Your word is " << getWord() << endl;
    }
private:
    string theWord;
};


int main()
{
    cout << "Enter a word" << endl;
    string aWord;
    WordGame theGame;
    cin >> aWord;
    theGame.setWord(aWord);
    theGame.displayWord();

}
4

3 に答える 3

4

単語を入力してから、Enter キーを押す必要があります。あなたは「プログラムを終了し、何も起こらない」と言いますが、何かが起こります。それは非常に速く起こるだけで、おそらくそれが起こっているのを見て、プログラムが閉じます. デバッグモードで「キーを押してメッセージを終了」したい場合は、

 system("PAUSE");

theGame.displayWord();

そして、あなたのcoutディスプレイが表示されます。

また、コードにはいくつかの最適化とエラーがあります。

  1. からの戻り値がありませんmain
  2. setWordconst参照で渡す必要があるため、関数はそうなります。

void setWord( const string& word )

  1. getWordconst参照で返す必要があるため、関数は次のようになります

string getWord()

const 参照による受け渡しの詳細については、参照による引数の受け渡しをご覧ください。

于 2012-04-13T04:58:54.317 に答える
2

Visual Studio でプロジェクトを右クリックして [プロパティ] -> [リンカー] -> [システム] -> [サブシステム] に移動すると、すぐに終了せず、System("pause") を使用する必要がないようにコンソールに設定できます。 . System("pause") は Windows のものであり、移植性を妨げます。

于 2012-04-13T05:06:47.250 に答える
0

他の回答では、コンソールがすぐに終了しないように IDE プロパティを変更するか、system("PAUSE"); を使用することが既に提案されています。独自のコンソールをロードし、そこから実行可能ファイルを手動で実行することもできます (これは IDE にもプラットフォームにも依存しません)。

ただし、最終的には、ユーザーがどの環境で作業するのか、どのようにプログラムをロードするのかがわからないため、より適切な解決策は、ユーザーが完了したことを確認するまでプログラムが終了しないようにする何かを自分で実装することです。出力を読んでいます。例えば:

WordGame theGame;
bool exit = false
while (!exit)
{
    cout << "Enter a word. Entering \"exit\" will terminate the program." << endl; 
    string aWord; 
    cin >> aWord;
    if (aWord == "exit") exit = true;
    else
    {
        theGame.setWord(aWord); 
        theGame.displayWord(); 
    }
}
于 2012-04-13T05:33:45.843 に答える