当前位置: 首页 > 知识库问答 >
问题:

即使声明了标识符,但在visual studio 2019中使用C++仍然会出现未声明标识符错误[closed]

东郭和光
2023-03-14

这可能只会变成一个每日邮报的事情,直到我得到它的窍门,我非常抱歉,如果这是恼人的任何人,但这是唯一的方法,我可以学习,而不是花更多的钱延长我的大学学位。

所以说主要的问题。我使用的是一个名为“I”的标识符,但代码显示它是未定义的,尽管在其他地方它是定义的,并且运行良好。下面我将发布的代码由game.cpp(顶部代码)和game.h(底部代码)组成。

#include "Game.h"


Game::Game()
{
    choice = 0;
    playing = true;
    activeCharacter = 0;
    fileName = "characters.txt";
}

Game::~Game()
{

}

 //Functions

void Game::initGame()
{
    createNewCharacter();
}

void Game::mainMenu()
{
    std::cout << "= MAIN MENU =" << std::endl;
    std::cout << "0: Quit" << std::endl;
    std::cout << "1: Travel" << std::endl;
    std::cout << "2: Shop" << std::endl;
    std::cout << "3: Level Up" << std::endl;
    std::cout << "4: Rest" << std::endl;
    std::cout << "5: Character Sheet" << std::endl;
    std::cout << "6: Create new Character" << std::endl;
    std::cout << "7: Save characters" << std::endl;
    std::cout << "8: Load characters" << std::endl;
    std::cout << std::endl;

    std::cout << std::endl << "Choice: ";
    std::cin >> choice;
    std::cout << std::endl;

    switch (choice)
    {
    case 0:

        playing = false;

        break;

    case 5:
        characters[activeCharacter].printStats();
        break;

    case 6:
        std::cin.ignore();
        createNewCharacter();
        saveCharacters();
        break;

    case 7:
        saveCharacters();
        break;

    case 8:
        loadCharacters();
        break;

    default:
        break;

    }
}

void Game::createNewCharacter()
{

    std::string name;
    std::cout << "Character name: ";
    std::getline(std::cin, name);

    characters.push_back(Character());
    activeCharacter = characters.size() - 1;
    characters[activeCharacter].initialize(name);

}

void Game::saveCharacters()
{
    std::ofstream outFile(fileName);

    if (outFile.is_open())
    {
        for (size_t i = 0; i < characters.size(); i++);
        {
            outFile << characters[i].getAsString() << "\n";
        }
    } 

    outFile.close();
}   

void Game::loadCharacters()
{

}


#pragma once

#include<iostream>
#include<iomanip>
#include<string>


class Item
{
private:
    std::string name;
    int buyValue;
    int sellValue;

public:
    Item();
    virtual ~Item();

    inline std::string debugPrint() const
    {
        return this->name;
    }
};

问题发生在game.cpp的底部。有问题的行是“out file<<;字符[i].getAsString()<<;“\n”;‘我一直得到括号I的错误。

共有1个答案

莫兴言
2023-03-14

在for循环后面多了一个分号。

 for (size_t i = 0; i < characters.size(); i++);
//                                             ^ here

这就是为什么花括号中的语句不再被算作循环的一部分,因此没有定义i

 类似资料:
  • 任务“:app:ExternalNativeBuildDebug”执行失败。生成命令失败。执行进程/home/raed/android/sdk/cmake/3.10.2.4988404/bin/ninja时出错,参数为{-c/home/raed/androidstudioprojects/simd/app/.CXX/cmake/debug/armeabi-v7a native-lib}ninja:

  • 我正在调试一个非常大的树着色项目,在该项目中,作者使用glsl文件来着色树,但我在编译glsl文件时遇到了麻烦: 以下是错误日志: 我使用mac osx,Xcode7.0,OpenGL和glut都是默认版本。Glew版本是1.13.0。 这是因为版本与作者使用的原始版本不匹配吗?因为我检查了原始版本,所以他使用了GLEW 1.9.0和GLUT 3.7.6。 //////更新/////// 原来ma

  • 所以我一直有这个错误,我不知道发生了什么。我在谷歌上搜索了一下,读了一些关于这个错误的问题,但什么都没用。我只想运行它,这样我就可以完成我的项目。 错误:开始低库存;结束;*第1行错误:ORA-06550:第1行,第9列:PLS-00201:标识符“LOWINVENTORY”必须声明ORA-06550:第1行,第7列:PL/SQL:忽略语句 编辑: 表创建:

  • 本文向大家介绍C#中使用@声明变量示例(逐字标识符),包括了C#中使用@声明变量示例(逐字标识符)的使用技巧和注意事项,需要的朋友参考一下 在C#中,@符号不仅可以加在字符串常量之前,使字符串不作转义之用,还可以加在变量名之前,使变量名与关键字不冲突,这种用法称为“逐字标识符”。请看下面的代码: 这里使用到@的地方有三处,@class,@static和@bool,如果不加@的话,他们都是关键字,编

  • 我使用Identityserver3作为MVC应用程序的授权服务器。因此,我的类如下: 这是我的子类: 这是我的: 但是在我的

  • 我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?

  • 这是我成功的存储过程 这是首先生成表的调用 最初,我试图用一些预定义的参数调用存储过程。 这导致错误“PLS-00201:标识符'B100'必须声明” 我是PL/SQL的新手,很难解决这个问题。我尝试添加DECLARE语句 这仍然会导致错误“PLS-00201:必须声明标识符‘B100’”,但它表示“PL/SQL:忽略语句”,然后表示“PLS-00201:必须声明标识符‘Steve’” 进一步挖掘