gpt4 book ai didi

c++ - 隐藏模板化辅助函数 - 静态成员或未命名的命名空间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:54 24 4
gpt4 key购买 nike

我正在尝试编写一个库,其中包含一些模板化函数,其中一些是辅助函数,因此我不希望我的用户访问它们。一些基本代码可能是

//mylib.h

namespace myfuncs
{
template<class T>
void helper (T input, int extrainformation)
{
//do some usefull things
}

template<class T>
void dostuff(T input)
{
int someinfo=4;
helper(input, someinfo);
}
}

是否可以通过某种方式隐藏辅助函数,使库的用户无法直接调用它?我原以为未命名的命名空间可能会完成这项工作,但因为我使用的是模板,所以我无法在头文件和实现文件之间拆分函数声明和函数体。将未命名的命名空间放在头文件中是没有用的,也是不好的风格。我唯一能想到的就是创建一个 mylib 类并将函数封装为私有(private)/公共(public)静态函数。

任何更好的解决方案将不胜感激。

菲尔

最佳答案

一种方法是使用“详细信息”或“内部”命名空间。有多少图书馆这样做。

namespace myfuncs
{
namespace detail
{
template<class T>
void helper (T input, int extrainformation)
{
//do some usefull things
}
}

template<class T>
void dostuff(T input)
{
int someinfo=4;
detail::helper(input, someinfo);
}
}

关于c++ - 隐藏模板化辅助函数 - 静态成员或未命名的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8167618/

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