Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户从菜单C++选择数组类型_C++_Types - Fatal编程技术网

用户从菜单C++选择数组类型

用户从菜单C++选择数组类型,c++,types,C++,Types,我已经创建了一个通用的类似数组的模板来创建不同类型的数组。现在,我需要从菜单中获取用户输入,了解他们正在构建哪种类型的阵列。我尝试让用户输入一个数字,并使用该数字从常量字符串数组中选择一个字符串。但很明显,这会引发类型转换错误。是否有方法将类型的文本字符串转换为其类型或直接引用类型。谢谢 以下是我需要在运行时将类型放入的代码: SimpleVector<TYPE> myVect = SimpleVector<TYPE>(dataSize); 我还尝试了这个switch语

我已经创建了一个通用的类似数组的模板来创建不同类型的数组。现在,我需要从菜单中获取用户输入,了解他们正在构建哪种类型的阵列。我尝试让用户输入一个数字,并使用该数字从常量字符串数组中选择一个字符串。但很明显,这会引发类型转换错误。是否有方法将类型的文本字符串转换为其类型或直接引用类型。谢谢

以下是我需要在运行时将类型放入的代码:

SimpleVector<TYPE> myVect = SimpleVector<TYPE>(dataSize);
我还尝试了这个switch语句,我更喜欢它,但是我得到了一个重新定义的错误

switch (dataChoice) {
        case 1:
            SimpleVector<int> myVect = SimpleVector<int>(dataSize);
            break;
        case 2:
            SimpleVector<double> myVect = SimpleVector<double>(dataSize);
            break;
        case 3:
            SimpleVector<string> myVect = SimpleVector<string>(dataSize);
            break;
        default:
            break;
 }

要消除重新定义错误,必须将类型定义括在花括号内

 switch (dataChoice) {
        case 1:
            {
              SimpleVector<int> myVect = SimpleVector<int>(dataSize);
              break;
            }
        case 2:
            {            
               SimpleVector<double> myVect = SimpleVector<double>(dataSize);
               break;
            }
        default:
            break;
  }
类型是编译器在编译时必须知道的:当您试图使用字符串值而不是类型时,编译器将拒绝协作


参考

模板是编译时的东西,无法在运行时指定它们的参数。这是我第一次使用模板,但我构建了类并用不同类型的数据对其进行了测试,效果很好。现在根据要求,我应该让用户从菜单中选择他们想要输入的数据类型。没有办法做到这一点?我想我得问问谁写过作业要求,看看他们期望什么。谢谢您可能希望使用某种基类和共享的ptr来管理所有这些。你也可以查看任何boost,从这样一个简单的修复到我的问题,lol。它确实有效,但我不得不在每种情况下复制大量代码。我不确定我是否可以采取更干净的方法,但我确实满足了我需要满足的所有要求。谢谢你的帮助和分享这些信息,让人困惑,但它似乎真的很强大。