当我不需要使用函数的所有参数时,我该怎么办?
What should I do when I don't need to use all the parameters of a function?
我创建了一个函数
size_t CalculusWizard::parseDouble(const std::string & str, std::string::const_iterator start, double & d)
具有广泛的用途。我目前的特殊使用只需要它的返回值,它完全不依赖于参数double & d
。所以我在代码中做的是创建一个变量dummy
它只是作为一种形式:
double * dummy = new double;
if (parseDouble(fx, fx.begin(), *dummy) == fx.size())
fx = "c";
delete dummy;
我应该这么做吗?对于如何更好地处理这类场景有什么建议吗?
感谢您抽出时间来回答。
你可以用一组不同的参数创建另一个parseDouble方法(即,不是双引号&d)。
另一种选择是使用facade设计模式,将解析double类型的复杂任务留给私有方法,并创建一个方法子集,为您的每个需求接受适当数量的参数。
你也可以(正如之前的海报所说)使用默认值,尽管我个人不喜欢它们,因为它鼓励使用"非标准行为"对我来说
如果你这样做的话会更整洁:
double dummy = 0.0;
if (parseDouble(fx, fx.begin(), dummy) == fx.size())
fx = "c";
这样你就不必担心清理内存(如果parseDouble
抛出异常怎么办?您将泄漏分配给dummy
的内存)。
要在块结束之前删除dummy
,可以使用作用域:
{ // Start new scope.
double dummy = 0.0;
if (parseDouble(fx, fx.begin(), dummy) == fx.size())
fx = "c";
} // dummy gets destroyed here.
相关文章:
- 我的 cout 上有一个奇怪的输出,它把答案放在第一位,然后在我调用它的地方放一个奇怪的输出.我该怎么办?
- 当两个相等的双精度的相对比较不起作用时,我该怎么办?
- 我需要通过窗口句柄(HWND)获取文件,我该怎么办?
- 我正在"void value not ignored as it ought to be"我该怎么办?
- 未定义的引用错误,我该怎么办?
- 我在此代码中要求一个数字,如果用户给出一个字母,我该怎么办?
- 当一个功能完成另一个功能打开时,我该怎么办?
- 如果我尝试将 graphics.h 用于 c/c++ 时显示错误,我该怎么办?
- 这对我来说真的很难,我该怎么办
- 在C 中,我该怎么办才能格式化输出
- 当MPI中未知的发送消息数量时,我该怎么办
- 如果违反了利斯科夫替代原则,我该怎么办?
- 当(CUDA 7.5的)nvcc / cudafe++崩溃并出现段错误时,我该怎么办?
- 当来自外部库的线程不可预测地崩溃我的应用程序时,我该怎么办
- C++ 中的整数范围 - 当标准尚不存在时我该怎么办
- Visual Studio C++:获取未解析的令牌和未解析的链接.我该怎么办
- qextserialport在Windows上丢弃数据——我该怎么办
- 函数内存不足-我该怎么办
- c++ Koenig(参数依赖)查找:如果不同名称空间中的两个名称空间函数具有相同的参数类型该怎么办?
- 当我不需要使用函数的所有参数时,我该怎么办?