C++ 在函数内调用名称空间的任何简短形式
我使用犰狳矩阵库指定一个向量,例如:C++ 在函数内调用名称空间的任何简短形式,c++,c++11,namespaces,C++,C++11,Namespaces,我使用犰狳矩阵库指定一个向量,例如: mid(mids::input1)=.... mid(mids::input2)=.... mid(mids::input3)=.... mid(mids::input4)=.... mid(mids::input5)=.... mid(mids::input6)=.... mid(input6)=... 这里的mid是一个向量,它的函子与操作符=混合,类似于mid[…]为向量的特定索引赋值 而mids是一个名称空间。由于我经常使用mid(mids:..
mid(mids::input1)=....
mid(mids::input2)=....
mid(mids::input3)=....
mid(mids::input4)=....
mid(mids::input5)=....
mid(mids::input6)=....
mid(input6)=...
这里的mid
是一个向量,它的函子与操作符=
混合,类似于mid[…]
为向量的特定索引赋值
而mids
是一个名称空间。由于我经常使用mid(mids:..)
模式,我想知道是否有任何方法可以避免写得长而短,例如:
mid(mids::input1)=....
mid(mids::input2)=....
mid(mids::input3)=....
mid(mids::input4)=....
mid(mids::input5)=....
mid(mids::input6)=....
mid(input6)=...
换句话说,在mid
的函子中,我希望考虑命名空间mid
有没有C++11(或更低版本)的解决方案
我不喜欢使用宏。我不喜欢使用名称空间mid打开对于整个代码,代码>到
我只需要使用名称空间mid
在mid
函子中。只需使用名称空间mid放置代码>位于要使所有名称在中可见的范围内。它不会使该范围之外的任何内容可见。例如:
void fun1 () {
using namespace mids;
auto v = input1; // Ok, finds mids::input1
}
void fun2 () {
auto v = input1; // Error, cannot see mids::input1
}
平分
void fun () {
mid.input(input1); // Error
{
using namespace mids;
mid.input(input1); // Ok
}
mid.input(input1); // Error
}
您是否尝试使用名称空间mid放置代码>在该函数中?@MikeSeymour我认为它不会影响调用点。我指的是多次调用mid
的函数。或者某个范围(比“整个代码”窄),其中包含所有调用mid
的函数。问题是会发生名称冲突。这里名称空间mids
和状态
有许多共同的名称。你是说使用名称空间mids放置代码>在实现的代码中?那么,它会影响调用点吗?@ar2015添加了一个示例来澄清。它只在函数内部工作,而不在我调用func1
的地方工作。我说的对吗?@ar2015是的,你应该把它放在你想使用名称的范围内,而不是你调用的函数中。也就是说,将它放在执行此操作的范围内mid.insert(mids::input1)代码>东西。