gpt4 book ai didi

C++:隐藏一些函数

转载 作者:可可西里 更新时间:2023-11-01 17:35:57 27 4
gpt4 key购买 nike

我重新定义了一些数学函数(以便它们更快 - 即:不太准确 - 或使用模板)。我将这些函数放在命名空间中,它们工作得很好。

不过,我经常会忘记从命名空间调用函数(即:我忘记编写 mymath::cosusing mymath::cos;当我想调用 cos 时),很难找出我忘记它的地方(直到现在我只能通过分析才能找到它)。

鉴于此

  • 在我的数学头文件中包含标准的math.hcmath 头文件,而那
  • 我需要包含标准数学标题(因为我的一些函数只是标准函数的包装器,我希望它们是内联的或模板化的),

如果使用全局命名空间(即:没有命名空间)数学函数,是否有一种可移植的方法来隐藏标准数学函数以便报告编译错误?

一个解决方案可能是将 using namespace mymath; 放在我的数学头文件的底部,但这个解决方案看起来并不那么好:它破坏了命名空间的全部目的;我更愿意明确说明是使用 mymath 中的函数还是 std 中的函数,这样我就不得不在没有风险的情况下,在较差的函数或更准确的函数之间做出选择忘记它。


编辑:

许多答案说,如果我使用全局命名空间中的 cos(不使用 stdmymath),并包含 cmath(而不是 math.h),编译应该会失败。

我不知道标准是怎么说的,但是:

#include <cmath>
int main( ) {
cos( M_PI );
return 0;
}

使用 GNU GCC (g++) 4.5.1(及旧版本)编译良好。

最佳答案

将它放在一个头文件中,并在所有地方#include它:

namespace DontUseMe {  
double cos (double) ;
// ...etc.
}
using namespace DontUseMe ;

关于C++:隐藏一些函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416444/

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