2016-06-28 9 views
-3

私の問題の外には多くの解決策があると思いますが、私はそれを得ることはできません、私は構造体の新機能です - そう助けてください..構造体から別のcppファイルの値を取得するにはどうすればよいですか?

私の問題は私のheader.hファイル内に関数があり、その中に構造体の値の1つに文字列を入れ、ヘッダファイルにも文字列を出力することができますが、構造体とその値が必要です!!私はその値にアクセスすることができます異なるの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

なぜ関数は引数を取るのではなく、ローカル構造体をハードコードしますか?そのポイントは何ですか? – Barmar

+0

関数内で構造体を静的にし、参照によって返すことができます。 – NathanOliver

+5

これは構造体やファイルとは関係ありません。 C++の本、特に戻り値とスコープに関する部分が必要です。 – deviantfan

答えて

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 
} 
関連する問題