如何从不同cpp文件中的结构中获取值?

时间:2016-06-28 14:29:26

标签: c++ struct

我认为我的问题外面有很多解决方案,但我不明白,我对结构有点新意 - 所以请帮助我......

好吧我的问题是我在我的header.h文件中声明了一个结构,并且里面还有一个函数,它将一个字符串放在一个struct值中,在头文件中我也可以输出字符串,但是我想要那个结构和那!!值!在一个不同的cpp文件中我可以访问该值 - 所以这是我的代码

header.h

#include <iostream>
#include <string.h>

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

struct FUNCTIONS
{
  std::string f_name;
};
//extern FUNCTIONS globalStruct;

//put in struct variable
void put2struct()
{
  struct FUNCTIONS struct1;
  struct1.f_name = "FUNCTION";
  std::cout << "Functionname: " << struct1.f_name << std::endl;

}

#endif //FUNCTIONS_H

和main.cpp

#include <iostream>
#include <string.h>

#include "header.h"

using namespace std;



int main(int argc, char const *argv[])
{
  struct FUNCTIONS globalStruct;
  put2struct();

  //FUNCTIONS struct1;
  std::cout << "Functionname2: " << globalStruct.f_name << std::endl;
  return 0;
}

我希望有人可以帮助我,我真的不知道如何做到这一点:/

1 个答案:

答案 0 :(得分:1)

无法直接访问定义它的块之外的局部变量。因为struct1是一个自动变量,所以当put2struct返回时它会被销毁,之后就不再存在了。

您可以编写一个以FUNCTIONS为引用的函数,并修改put2struct以调用该函数。这样您就可以从另一个cpp文件访问struct1

void foo(FUNCTIONS&);

void put2struct()
{
    FUNCTIONS struct1;
    // do your thing
    foo(struct1);
}

// another file
void foo(FUNCTIONS& object) {
    // you have access to the object passed by reference
}