1

它只运行 main,输出“输入一个单词”,但完全忽略了对象/类

我是新手,抱歉,如果这是一个不恰当的简单问题。这在发布和调试模式下都会发生

#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

您需要输入一个单词,然后按回车键。你说“它退出了程序,什么也没有发生”,但确实发生了一些事情。它发生得如此之快,您可能确实看到它发生并且程序关闭。如果您处于调试模式并且想要“按键退出消息”,请执行

 system("PAUSE");

theGame.displayWord();

你会看到你的cout显示器。

此外,您的代码存在一些优化和错误。

  1. 您缺少来自 的返回值main
  2. 因为setWord你应该通过 const 引用传递,所以函数就是这样。

void setWord( const string& word )

  1. 因为getWord你应该通过 const 引用返回,所以函数是

string getWord()

有关通过 const 引用传递的更多信息,请查看通过引用传递参数

于 2012-04-13T04:58:54.317 回答
2

在 Visual Studio 中,如果您右键单击项目然后转到 Properties->Linker->System->SubSystem,您可以将其设置为 Console,这样它就不会立即退出并阻止您使用 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 回答