C++ C++。exe忽略类,仅运行main(初学者)

C++ C++。exe忽略类,仅运行main(初学者),c++,C++,它只运行main,输出“输入单词”,但完全忽略对象/类 我是新手,如果这是一个不恰当的简单问题,我很抱歉。 这在发布和调试模式下都会发生 #include <iostream> using namespace std; class WordGame { public: void setWord( string word ) { theWord = word; } string getWord() { ret

它只运行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();

}
#包括
使用名称空间std;
课堂文字游戏
{
公众:
无效设置字(字符串字)
{
单词=单词;
}
字符串getWord()
{
返回单词;
}
void displayWord()
{

cout你需要输入一个单词,然后按enter。你说“它退出程序,什么也没有发生”,但确实发生了一些事情。它发生得太快了,你可能看到它发生了,程序关闭。如果你处于调试模式,想有一个“按键退出消息”,那么就这样做

之后

您将看到您的
屏幕

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

  • 您缺少
    main
    中的返回值
  • 对于
    setWord
    您应该通过const引用传递,因此函数将是
  • void设置字(常量字符串和字)

  • 对于
    getWord
    您应该通过const引用返回,因此函数将是
  • string getWord()


    有关通过常量引用传递的详细信息,请查看。

    您需要输入一个单词,然后按enter。您说“它退出了程序,什么也没有发生”,但确实发生了一些事情。它发生得太快,您可能看到它发生了,程序关闭。如果您处于调试模式,希望有一个“按键退出信息”然后执行

    之后

    您将看到您的
    屏幕

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

  • 您缺少
    main
    中的返回值
  • 对于
    setWord
    您应该通过const引用传递,因此函数将是
  • void设置字(常量字符串和字)

  • 对于
    getWord
    您应该通过const引用返回,因此函数将是
  • string getWord()


    有关通过常量引用传递的详细信息,请查看。

    在Visual Studio中,如果右键单击该项目,然后转到“属性”->“链接器”->“系统”->“子系统”,则可以将其设置为Console,使其不会立即退出,并防止您使用System(“暂停”).System(“暂停”)在Visual Studio中,如果右键单击项目,然后转到“属性”->“链接器”->“系统”->“子系统”,则可以将其设置为Console,使其不会立即退出,并防止您使用System(“暂停”).System(“暂停”)是Windows的东西,会妨碍可移植性。

    其他答案已经建议更改IDE属性以防止控制台立即退出,或者使用系统(“暂停”);您也可以简单地加载自己的控制台,然后从那里手动运行可执行文件(既不依赖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(); 
        }
    }
    
    WordGame游戏;
    bool exit=false
    当(!退出)
    {
    库特奥德;
    如果(aWord==“exit”)exit=true;
    其他的
    {
    游戏。设定词(aWord);
    游戏。显示单词();
    }
    }
    
    其他答案已经建议更改IDE属性以防止控制台立即退出,或者使用系统(“暂停”);您也可以简单地加载自己的控制台,然后从那里手动运行可执行文件(既不依赖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(); 
        }
    }
    
    WordGame游戏;
    bool exit=false
    当(!退出)
    {
    库特奥德;
    如果(aWord==“exit”)exit=true;
    其他的
    {
    游戏。设定词(aWord);
    游戏。显示单词();
    }
    }
    

    键入一个单词,然后按enter键。它将退出程序,没有任何意外情况对我来说很好,正在使用IDE,并且在输入单词后立即关闭控制台?^是的。不完全确定IDE是什么,但我创建了一个带有代码块的.exe。当我“构建并运行”时,它可以正常工作,但.exe关闭。可能与的重复。键入一个word并按enter键。然后退出程序,没有任何意外情况对我来说很好,正在使用IDE,并且在输入word后立即关闭IDE和控制台?^是的。不完全确定IDE是什么,但我创建了一个带有代码块的.exe。当我“生成并运行”时,它工作正常,但.exe关闭。的可能重复。您不需要返回值,因为它自动默认为0。您不需要返回值,因为它自动默认为0。+1,这是一个比
    system(“PAUSE”)
    更好的解决方案。但是您可以只编写
    while(true){…if(aWord==“exit”)break;}这是真的,而且我考虑过一个简单的包含REST的版本,但是PACK通常被认为是坏的风格(它只是一种特殊类型的GOTO语句)。所以我选择了一个控制变量。公平地说,每个都是他自己的。我猜JonBentley @代码<破> <代码>通常被认为是坏的风格= >呃,实际上,不使用<代码>破解<代码>被认为是所有我所看到的好的C++代码库中的坏风格。这是FUD。显然意见不同,但是有一个大的学校。这不鼓励在除了简单的情况之外的所有情况下使用类似goto的语句,并且有很多很好的理由(尽管有很多人不同意这些理由)
    
    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(); 
        }
    }