我认为我的问题外面有很多解决方案,但我不明白,我对结构有点新意 - 所以请帮助我......
好吧我的问题是我在我的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;
}
我希望有人可以帮助我,我真的不知道如何做到这一点:/
答案 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
}