2016-04-17 16 views
-1

C++言語で以下の目標を達成するにはどうすればよいですか。 私の目的は、入力ソース(構造体)をコンストラクタ(または同じクラスの別のメソッド)で定義し、処理のために別のメソッドでそれにアクセスすることです。例:の場合 :C++でクラスメソッド間の静的ローカル変数の値にアクセスする方法

#include "iostream" 
class A 
{ 
    public: 
     struct source{  //input source 
     char* input; 
     unsigned int result; 
     }; 

     A(); //constructor 
     ~A(); //destructor 
     void process(); 
}; 

A::A() 
{ 
    //static local input source 
    static const source inp[2] = { {"input1", 2}, {"input2", 3} }; 
} 

void A::process() 
{ 
//The value of static structure "inp" initialized in constructor is to be 
// read here. 
// Say I want to print the "result" 
    std::cout << "input1 result" << inp[0].result; //should print 2 
    std::cout << "input2 result" << inp[1].result; //should print 3 
} 

客観上記の任意の代替アプローチ会は大歓迎です。 ご協力いただきありがとうございます。

+3

、することはできません。 –

+2

これはかなりばかげているようです。なぜ、普通のステートフルなクラスを持っていないのですか? –

+2

inpをコンストラクタに入れるのではなく、クラスメンバにします。メンバはstatic constにすることができます。 – Unimportant

答えて

1

静的定数変数をクラスのパブリックメンバーにして、それを通常アクセスするのが最善の方法です。詳細はこの記事を参照してください:要するに

C++ where to initialize static const

+0

この静的変数は、Jaydeepの質問のように初期化リストでどのように初期化できますか?あなたはあなたの答えに実際の例を提供できますか? – cassandrad

+0

私はC++ 11が@cassandradiedに問題がないと思った –

+0

そして、実際の例がありますか?私はあなたのアプローチを試みましたが、それは私の状況では機能しません。 – cassandrad

関連する問題