C++ 模板,在不初始化的情况下声明对象

标签 c++ class templates object types

所以我有以下情况。基本上我想知道是否可以在不知道类型的情况下声明模板类的对象,或者是否有其他方法可以用于这种情况。

template <class T> class SomeTemplateClass{
    vector<T> v;
}

int main(){
  --- Here is where i want to declare the object ---
  SomeTemplateClass o;
  cin >> eType;
  --- Type is not determined until some user input---
  if (eType == "int"){
        o = SomeTemplateClass<int> (size);
  } 
  else if (eType == "char") {
      o = SomeTemplateClass<char> (size);
  }
  else if (eType == "float") {
     o = SomeTemplateClass<float> (size);
  } 

类型必须作为标准输入传递,因为这是作业的要求。

编辑:忽略其他一切,我的问题是我想创建一个 T 类型的 vector ,其中 T 是在运行时通过用户输入确定的。这是否可能,如果不可能,什么是可接受的解决方案

最佳答案

好吧,通过阅读你的评论,我想你会想要这样的东西

template<typename T>
class myclass {
    vector<T> v;
... other methods
};

template<typename T>
void do_something_cool_with_myclass(myclass<T> obj)
{
   //do something with obj, type independently
}

int main() {
    ...
    cin >> type; //get type from user somehow
    switch (type) {
        case int:
         myclass<int> obj;
         do_something_cool_with_myclass<int>(obj);
        ....
    }
}

您不会浪费内存,并且可以在不知道编译时数据类型的情况下处理您的数据。

关于C++ 模板,在不初始化的情况下声明对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488501/

相关文章:

jquery - 使用 jQuery 更改 CSS 类属性

ios - 适应不断变化的模型 Swift iOS?

asp.net - 如何在回发时获取动态添加的datagridview列的值

c++ - 模板如何影响 const 全局变量的链接?

c++ - 包括 <cstdio> 和 <stdio.h> 的正确顺序?

c++ - 如何将 GLES 包含在旧 GL 中

c++ - 是否有好的数据翻译/转换模式/习惯用法?

python - 将模块方法分配给类变量或实例变量

c++ - 当涉及依赖范围的内部类时,如何使 C++ 找到模板化函数头?

c++ - 左右对齐输出一致