gpt4 book ai didi

C++ 简化代码

转载 作者:行者123 更新时间:2023-11-30 01:53:57 27 4
gpt4 key购买 nike

我只是有一个基本问题。这是否有可能进一步简化,因为我几乎将同样的事情称为 sin cos tan asin acos 和 atan。它看起来很丑,如果可能的话,我想让它看起来很漂亮。

if(m_RHS->get_gType() == INT)
{
ostringstream ss;
ss << (sin(m_RHS->evalint() * (M_PI / 180)));
return ss.str();
}
else
{
ostringstream ss;
ss << (sin(m_RHS->evaldouble() * (M_PI / 180)));
return ss.str();
}

最佳答案

元编程,fo' shizzle:

template<typename T>
std::string sin_deg_str(T angle_deg)
{
ostringstream ss;
ss << (sin(angle_deg * (M_PI / 180)));
return ss.str();
}

// ...

if(m_RHS->get_gType() == INT)
return sin_deg_str(m_RHS->evalint());
else
return sin_deg_str(m_RHS->evaldouble());

不过,不确定是否可以使用 ?: 运算符消除 if...then,因为类型不匹配。


添加更多功能?这可能有效:

template<typename T, typename Function>
std::string call_deg_str(T angle_deg)
{
ostringstream ss;
ss << (Function(angle_deg * (M_PI / 180)));
return ss.str();
}

// ...

if(m_RHS->get_gType() == INT)
return call_deg_str<sin>(m_RHS->evalint());
else
return call_deg_str<sin>(m_RHS->evaldouble());

关于C++ 简化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573579/

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