gpt4 book ai didi

c++ - 在每次执行时设置模板代码的类型

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:07 26 4
gpt4 key购买 nike

我有一些使用模板的代码,因此我可以在 float、real、double 之间切换,以提高计算精度或节省内存。现在我想让用户在每次执行时选择精度,但我不确定我应该怎么做。

假设在我的 main.cpp 中有

// main.cpp
Object<double> obj;
obj.doSomething();

有没有办法“设置”使用的类型?像下面这样的东西?

//main.cpp

std::cout << "Choose Precision ": << std::endl;
std::cin >> PRECISION; // eg float or double

? fix precision and use generic code below with it ?

Object<PRECISION> obj;

obj.doSomething();

更新

现在很清楚我不能在执行时。谢谢。

我是否仍可以在 main 中使用通用模板代码,这样我只有 1 行可以编辑以不同精度编译代码?

Kevin Cadieux 回答的更新:typedef double MyPrecision;

最佳答案

您无法在运行时设置模板的类型,但您可以选择要使用的模板特化。例如:

template <typename T>
void doStuff<T>()
{
Object<T> obj;
// do something with obj
}

int main()
{
// same PRECISION getting code
switch (PRECISION) {
case (x) :
doStuff<double>();
break;
case(y) :
doStuff<float>();
break;
....
}

关于c++ - 在每次执行时设置模板代码的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206982/

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