2016-04-17 10 views
-1

Wie erreiche ich unter Ziel in C++ Sprache. Mein Ziel ist es, eine Eingabequelle (eine Struktur) in einem Konstruktor (oder einer anderen Methode derselben Klasse) zu definieren und in einer anderen Methode auf die Verarbeitung zuzugreifen. Für ZB:In C++ Zugriff auf den Wert der statischen lokalen Variablen zwischen den Klassenmethoden

#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 
} 

Alle alternativen Ansatz Sitzung über Ziel ist höchst willkommen. Vielen Dank im Voraus für die Hilfe.

+3

Kurz gesagt, man kann es nicht. –

+2

Das scheint ziemlich albern. Warum nicht eine normale, stateful Klasse haben? –

+2

Machen Sie ein Klassenmitglied ein, anstatt es in den Konstruktor einzufügen. Mitglieder können statisch const sein. – Unimportant

Antwort

1

Es scheint der beste Ansatz zu sein, die statische konstante Variable zu einem öffentlichen Mitglied der Klasse zu machen und dann normal darauf zuzugreifen. Sehen Sie diesen Beitrag für weitere Informationen:

C++ where to initialize static const

+0

Wie kann diese statische Variable mit einer Initialisierungsliste wie in den Fragen von Jaydeep initialisiert werden? Können Sie in Ihrer Antwort ein funktionierendes Beispiel angeben? – cassandrad

+0

Ich dachte, C++ 11 hat kein Problem damit @cassandradied –

+0

Und gibt es ein funktionierendes Beispiel? Ich habe deine Herangehensweise versucht und es funktioniert nicht unter meinen Bedingungen. – cassandrad

Verwandte Themen