我试图让用户选择模板是 int、double 还是 string。但是我的方法存在继承问题,因为我使用 If 语句来初始化类模板对象,所以每当我想进行方法调用时,编译器都会抛出错误。
template<class T>
class foo {
private:
int bar
public:
void setBar(int newBar);
};
template<class T>
void foo<T>::setBar(int newBar) {
bar = newBar;
}
int main() {
int inputType;
cout << endl << "1 for integer, 2 for double, 3 for strings." << endl <<
"What kind of data do you wish to enter?(1-3): ";
cin >> inputType;
if(inputType == 1) {
foo<int> v1;
} else if(inputType == 2) {
foo<double> v1;
} else if(inputType == 3) {
foo<string> v1;
} else {
cout << "Error - Please enter in a proper #: ";
}
//Compiler Error
v1.setBar(3);
return 0;
}
因为我是这样做的,所以每当我尝试调用setBar()
. 我如何克服这一点并允许用户选择并允许方法调用?我知道如果我不使用模板,我可以在 if 语句之前声明它,但是对于模板,编译器要求我先告诉它我想要什么类型。谢谢!