gpt4 book ai didi

c++ - 适用于头文件的函数别名

转载 作者:行者123 更新时间:2023-11-28 04:25:51 24 4
gpt4 key购买 nike

假设文件是​​这样的:

my_code.h:

namespace my {
namespace _details{
int ActionNoPrecision(int a);
float ActionSinglePrecision(float a);
double ActionDoublePrecision(double a);
}

auto& Action = my::_details::ActionSinglePrecision;
}

my_code.cpp - 实现这些功能

所以 Action 是函数的别名,意思是从用户代码调用。在我这边,我想控制这个别名的含义,而不触及用户的源代码(即用户仍然调用 Action,但 Action = ActionDoublePrecision)。但是在当前代码中我不能包含这个头文件,因为函数引用将被定义多次。

如何处理?我想出了创建内部带有这些别名的静态类的想法,但我从未在任何库中看到过这种方法(那么它们是否只有一个硬编码的函数名称?)。

我还有一个更深层次的问题。如果别名的含义发生变化(即函数别名、类型别名和其他),别名是否需要重新编译用户代码?我想不是,因为真正被调用的函数的位置改变了,所以重新链接是必要的

最佳答案

你快到了。只需使用这个:

constexpr auto* Action = my::_details::ActionSinglePrecision;

这可以毫无问题地包含到多个翻译单元中。

关于c++ - 适用于头文件的函数别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371073/

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