gpt4 book ai didi

c++ - 命名空间模板函数和隐藏的命名空间变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:27 25 4
gpt4 key购买 nike

我正在编写一个 namespace ,它需要内部的某些函数才能访问特定变量(也在 namespace 中声明)。通常当我这样做时,我会在 .cpp 文件中声明变量以防止外部访问它。

.h

namespace Example
{
int myFunc();
}

.cpp

namespace Example
{
int hiddenVar;

int myFunc()
{
.. do something with hiddenVar
return someValue;
}
}

我的问题是我需要定义一个需要访问这个隐藏变量的模板函数。不幸的是,由于模板函数的主体必须在头文件中定义,因此它无法访问隐藏在 .cpp 中的变量。

.h

namespace Example
{
template< typename T >
void myFunc( const T& myT )
{
.. do something with hiddenVar // doesnt know what hiddenVar is
}
}

.cpp

namespace Example
{
int hiddenVar;
}

有没有办法在命名空间中隐藏变量,同时在 header 中为模板函数提供访问权限?

最佳答案

.h:

namespace Example
{
int * get_hiddenVar();
template< typename T >
void myFunc( const T& myT )
{
int * hiddenVarPtr = get_hiddenVar();
.. do something with *hiddenVarPtr
}
}

.cpp

namespace Example
{
int hiddenVar=0;
int * get_hiddenVar()
{
return &hiddenVar;
}
}

关于c++ - 命名空间模板函数和隐藏的命名空间变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059683/

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