Wie erhält man eine Instanz einer Klassenvorlage aus der if-Anweisung? (C ++)

Angenommen, ich habe eine Klassenvorlage, die ein Mitglied hatpData, das ist einAxB Array von beliebigem TypT.

template <class T> class X{ 
public:
    int A;
    int B;
    T** pData;
    X(int a,int b);
    ~X();        
    void print(); //function which prints pData to screen

};  
template<class T>X<T>::X(int a, int b){ //constructor
    A = a;
    B = b;
    pData = new T*[A];
    for(int i=0;i<A;i++)
        pData[i]= new T[B];
    //Fill pData with something of type T
}
int main(){
    //...
    std::cout<<"Give the primitive type of the array"<<std::endl;
    std::cin>>type;
    if(type=="int"){
        X<int> XArray(a,b);
    } else if(type=="char"){
        X<char> Xarray(a,b);
    } else {
        std::cout<<"Not a valid primitive type!";
    } // can be many more if statements.
    Xarray.print() //this doesn't work, as Xarray is out of scope.
}

Da die Instanz Xarray innerhalb einer if-Anweisung erstellt wird, kann ich sie nirgendwo anders verwenden. Ich habe versucht, vor den if-Anweisungen einen Zeiger zu erstellen, aber da der Typ des Zeigers zu diesem Zeitpunkt nicht bekannt ist, ist mir dies nicht gelungen.

Was wäre ein angemessener Weg, um mit solchen Problemen umzugehen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage