gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:59:51 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com