【问题标题】:object is undefined in function对象在函数中未定义
【发布时间】:2017-05-10 19:00:31
【问题描述】:

我是 C++ 新手,最近开始为学校练习上课。 我真的看不出有什么问题,在为 Hero 类创建一个对象“玩家”后,我不能稍后在“主菜单”函数中使用该对象来调用方法,因为我得到“标识符未定义”错误!

有什么建议吗?

#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

class Hero
{   
    private:
        //member variables
        string playername;

    public:
        //constructor
        Hero(string name)
        {
            playername = name;
        }

        string getName()
        {
            return playername;
        }

};

//start 1
void mainMenu()
{
    cout << " -  -  - |" << player.getName() << "-  -  - \n";
}

void setPlayer()
{
    string name;
    cout << "Hello, what is your name? " << endl;
    getline(cin, name);

    Hero player(name);
    mainMenu();
}

int main()
{
    int selection;

    cout << "Shadow of darkness\n ";

    cout << "1.) Start ";
    cout << "2.) Exit ";

    cin >> selection;

    if (selection == 1)
        setPlayer();

    else if (selection == 2)
        exit (0);

    else
        main();

    return 0;
}

【问题讨论】:

  • 获取book 并且不要跳过章节。并且更系统地按回车键的次数更少。
  • 您的问题属于必须阅读this link 的类别。
  • playersetPlayer 的范围内声明,标识符绑定到它们声明的范围。看起来您在查看其他代码时遗漏了很多信息,通过 猜测来学习在 C++ 中并不真正起作用。
  • 好的,感谢我习惯了 python 并且实际上已经使用 pygame 创建了一个游戏,但这就是如此不同,以一种糟糕的方式:)

标签: c++ function class object


【解决方案1】:

好的,从main() 调用main() 是被禁止的(正如here 解释的那样),所以不要这样做。

这是你的类的一个典型例子(你有这个类很酷,我只是添加了一个初始化列表以供娱乐):

#include <iostream>
#include <string>
using namespace std;

class Hero
{
    private:
        //member variables
        string playername;
    public:
        //constructor
        Hero(string name) : playername(name)
        {
        }

        string getName()
        {
            return playername;
        }
};

int main()
{
    Hero player("Daniel");
    cout << "Player's name: " << player.getName() << std::endl;
    return 0;
}

输出:

玩家姓名:丹尼尔

在此基础上,尝试运用你的逻辑,做各种你渴望的事情(在阅读了一些书籍/教程之后)!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2018-04-26
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2019-08-05
    • 2013-10-16
    相关资源
    最近更新 更多