在c ++中,此范围错误中未声明变量

时间:2014-07-07 04:00:56

标签: c++

#include <iostream>
#include <string>
using namespace std;
void var (){
    string name;

}

int main(){
    int var();
    cout<<"hello world"<<endl;
    cout<<"what is your name???"<<endl;
    cin>> name;

    return 0;
}

我遇到了c ++的问题: 它说名称还没有在这个范围内声明

我无法弄清楚。

我有两个课程的原因是因为我现在正在尝试,并且在我解决这个问题之后会添加类和对象。

4 个答案:

答案 0 :(得分:1)

  1. 您声明了名称为var两次的函数。一个在全局命名空间中。

    void var(){ 字符串名称;

    }

  2. 和其他在函数main

    的块范围内
    int var();
    

    程序中不使用这两个功能。此外,第一个函数var有一个局部变量name,而后者则不会在函数中使用。

    1. 在函数main中使用标识符name

      CIN&GT;&GT;名;

    2. 既未在main的块范围内声明,也未在封闭的全局namespaec中声明。所以编译器发出错误。在名称为name的第一个函数中声明的标识符var在函数外部不可见。

      因此您需要定义函数main中使用的标识符name。例如

      string name;
      

      您的程序可以通过以下方式查找

      #include <iostream>
      #include <string>
      
      std::string var()
      {
         std::cout << "what is your name??? ";
      
         std::string name;
      
         std::cin >> name;
      
         return name;
      }
      
      int main()
      {
         std::cout << "hello world " << std::endl;
      
         std::string name = var();
         std::cout << "hello " << name << std::endl;
      
         return 0;
      }
      

答案 1 :(得分:0)

移动&#34;字符串名称;&#34;进入主要。你没有变量&#34; name&#34;在主要范围内(它是函数的局部变量&#34; var&#34;)

答案 2 :(得分:0)

我看到的问题:

  1. &#39;字符串名称&#39;要么需要在你的&#39; var&#39;方法,或全球宣布。
  2. 您调用方法&#39; var&#39;错误(假设您尝试拨打&#39; var&#39;来自&#39; main&#39;)。在C ++中,您可以调用没有返回类型(void)的函数,如下所示:var();如果函数具有返回类型,则可以使用如下返回类型分配局部变量:int x = var(); 注意:您的void var()方法不返回任何内容,它是无效的,因此您无法分配局部变量。
  3. 您需要了解基础知识。在你有程序性的理解之前,甚至不要上课 阅读&#39;范围&#39;。您的&#39; var&#39;中的局部变量(名称)方法,不能在其他任何地方使用,因为它是在本地声明的 - 它只能在&#39; var&#39;中使用。方法

答案 3 :(得分:0)

您必须声明string name是全局变量,或者是局部变量。 例如:

#include <iosream>
#include <string>
string name;