gpt4 book ai didi

C++ 变量到 const 表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:27 26 4
gpt4 key购买 nike

template <typename Real>
class A{ };

template <typename Real>
class B{ };
//... a few dozen more similar template classes

class Computer{

public slots:
void setFrom(int from){ from_ = from; }
void setTo(int to){ to_ = to; }

private:
template <int F, int T> void compute(){

using boost::fusion::vector;
using boost::fusion::at_c;

vector<A<float>, B<float>, ...> v;
at_c<F>(v).operator()(at_c<T>(v)); //error; needs to be const-expression.
};

//...
computer.compute(1, 3); // ok
computer.compute(var1, var2); // var1, var2 cannot appear in a constant-expression

这个问题不是关于Qt的,但是在我的例子中有一行Qt代码。

setFrom() 和 setTo() 是通过 GUI 小部件根据用户选择调用的函数。我的问题的根源是“从”和“到”是变量。在我的计算成员函数中,我需要根据“from”和“to”的值选择一个类型(A、B 等)。我知道如何做我需要做的事情的唯一方法是使用 switch 语句,但在我的情况下这非常乏味,我想避免。无论如何将错误行转换为常量表达式?

最佳答案

如果您不想使用 switchif/else block 语句,那么您将无法完成此任务。因为 at_c<> 函数模板采用编译时需要知道的整数参数。并且您的变量 to_from_ 在编译时是未知的。

我在以下主题中的回答与该主题有某种关联:

C++ STL type_traits question


或者可能(虽然我不确定)你可以编写一个派生自自身的类模板,每个基数递减整数 N 的值,然后类模板为特定值分派(dispatch)一个函数的 N.

关于C++ 变量到 const 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4573238/

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