【发布时间】:2014-03-23 15:24:21
【问题描述】:
假设我有一个类如下:
template <class T>
class Object {
private:
T object;
public:
Object(T object) : object(object) {}
};
现在在 main 中,我想创建这些对象,假设我提示用户输入指定 T 的输入。假设 T 可以是 int 或 char,那么输出可能类似于:
Do you want to create a char or int (c/i)?
一旦用户指定,我希望能够创建该对象。但是,我不想通过 if...else 构造。也就是说,似乎需要这样做的方式是
if (answer == 'c') {
Object(character);
} else {
Object(int);
}
显然不完全正确,但这就是想法。然而,这真的很烦人,因为还有其他更复杂的事情在发生,我基本上每次都必须重建这个 if...else 树,使得代码相当混乱。
有没有办法做类似的事情:
type = character || int; //this would still be determined by an if..else
Object(type);
【问题讨论】:
-
模板参数在编译时进行评估。真的没有办法通过用户输入来获取它们。