假设我有一个类模板,它有一个成员pData
,它是一个AxB
任意类型的数组T
。
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.
}
由于实例 Xarray 是在 if 语句中构造的,因此我无法在其他任何地方使用它。我试图在 if 语句之前创建一个指针,但由于此时指针的类型未知,所以我没有成功。
处理此类问题的正确方法是什么?