如何从另一个源文件访问变量的值?

时间:2016-03-27 09:03:14

标签: c++ codeblocks extern

我正在使用codeblockide。

的main.cpp

#include <iostream>
#include<string>
#include<fstream>
#include "adduser.h"

using namespace std;

int main()
{
    string name;
    adduser();
    user();
    cout<<name;
    return 0;
}

adduser.cpp

#include<fstream>
#include<iostream>
#include<cstdlib>

using namespace std;

int adduser()
{
    string name,pass;
    ofstream fout;
    fout.open("test.txt");
    cout<<"Enter The Name : ";
    cin>>name;
    cout<<"Enter The Password : ";
    cin>>pass;
    fout<<name<<","<<pass<<endl;
    fout.close();
    return 0;

}

adduser.h

#ifndef ADDUSER_H_INCLUDED
#define ADDUSER_H_INCLUDED

extern std::string name;
int adduser();

#endif // ADDUSER_H_INCLUDED

我想访问字符串变量&#34; name&#34;从adduser.cpp文件中打印并在main.cpp上打印

我搜索了&#34;如何从另一个源文件中访问变量&#34;得到&#34; extern&#34;关键字。

我用过&#34; extern&#34;但我没有得到我的预期,它什么都没有显示。

但这不适用于此。我做错了吗? 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您似乎试图从另一个函数访问函数adduser()的本地变量,这在C ++中是不允许的。 此外,string namemain()的声明隐藏了nameadduser.hpp的定义

这里有几个选项:

  • name移到adduser()之外的功能
  • 之前
  • adduser()的返回类型更改为std::string并将return name添加到adduser()main name = adduser() std::string& name
  • 将参数st::string* nameadduser()添加到adduser(),然后分别mainadduser(name)adduser(&name)中致电import calendar def some_function(year): y = calendar.Calendar(year) print list(y.monthdays2calendar(year, 1)) < / LI>