Laufzeit bestimmen, geben Sie für C++

Frage ich mich, ob der Typ kann bestimmt werden als Laufzeit-Informationen in C++.

(1) Obwohl meine Frage ist Recht allgemein, der Einfachheit halber, werde ich anfangen, von einem einfachen Beispiel:

 #include <stdio.h>  
 #include <iostream>  
 #include <cstring>  
 using namespace std;  
 int main(int argc, char * argv[])  
 {  
 if (strcmp(argv[1], "int")==0)   
 {  
     int t = 2;   
 }else if (strcmp(argv[1], "float")==0)  
 {  
     float t = 2.2; 
 } 
 cout << t << endl;  //error: ‘t’ was not declared in this scope
 return 0;  
 }

Für dieses Beispiel gibt es zwei Fragen:

(a) "argv[1] auf t" ist falsch, kann aber die Art info, die in der C-string argv[1] umgewandelt werden, um den eigentlichen Typ-Schlüsselwort? So brauchen wir nicht zu prüfen, für jede Art von if-else-Klausel und strcmp.

(b) zu machen, wie die variable t definiert im lokalen scope der if-Klausel immer noch gültig außerhalb. ich.e wie "export" eine lokale variable, die außerhalb des Anwendungsbereichs?

(2) Allgemein gesprochen, nicht speziell auf das einfache Beispiel oben, was sind die üblichen Methoden zur Laufzeit bestimmen-Typen? Es scheint mir, dass es vielleicht einige Möglichkeiten:

(a) kann man die Verarbeitung der Variablen wird festgelegt, wie der Typ in dem selben Umfang der definition. z.B.

 #include <stdio.h>  
 #include <iostream>  
 #include <cstring>  
 using namespace std;  
 int main(int argc, char * argv[])  
 {  
 if (strcmp(argv[1], "int")==0)   
 {  
     int t = 2;   
     cout << t << endl; 
 }else if (strcmp(argv[1], "float")==0)  
 {  
     float t = 2.2; 
     cout << t << endl; 
 } 
 return 0;  
 }

Und möglicherweise mithilfe von template-Funktion, um den gemeinsamen code für verschiedene Typen wiederverwendbar.

(b) oder man kann die abstrakte Klasse Typ und Polymorphismus, um indirekt den export der definition, aber ich bin nicht sicher, wie genau.

Vielen Dank für Ihre Beratung!

InformationsquelleAutor Tim | 2009-12-31
Schreibe einen Kommentar