将嵌套名称带入非成员函数的作用域
Bring nested name into scope in non-member function
我有一个结构 B,其中包含类型 anchor_point
作为嵌套名称的声明。如何使用 using
指令将 anchor_point
带入另一个函数的范围?我基本上想按原样访问类型而不对其进行限定(就像从成员函数中一样)。我尝试了以下(见评论):
#include <memory>
#include <iostream>
struct B
{
struct anchor_point
{
int a_;
};
int x;
int y;
};
int main()
{
// Here's what I want - doesn't compile
// using B;
// anchor_point ap1{5};
// This gets laborious if there are dozens of types inside of B
B::anchor_point ap2{5};
// This is even more laborious
using ap_t = B::anchor_point;
ap_t ap3{5};
std::cout << ap2.a_ << ", " << ap3.a_ << "\n";
}
这个例子很简单,但是假设我在结构中声明了几十个这样的类型,我并不总是想输入 B::type
,我该怎么做?
正如你所展示的那样
using anchor_point = B::anchor_point;
对每个相关成员重复。这必须在包含您对要涵盖的成员的所有使用的范围内只出现一次。
没有其他方法,特别是没有等效于 using namespace
的命名空间,这使得所有成员对不合格的名称查找可见。
我有一个结构 B,其中包含类型 anchor_point
作为嵌套名称的声明。如何使用 using
指令将 anchor_point
带入另一个函数的范围?我基本上想按原样访问类型而不对其进行限定(就像从成员函数中一样)。我尝试了以下(见评论):
#include <memory>
#include <iostream>
struct B
{
struct anchor_point
{
int a_;
};
int x;
int y;
};
int main()
{
// Here's what I want - doesn't compile
// using B;
// anchor_point ap1{5};
// This gets laborious if there are dozens of types inside of B
B::anchor_point ap2{5};
// This is even more laborious
using ap_t = B::anchor_point;
ap_t ap3{5};
std::cout << ap2.a_ << ", " << ap3.a_ << "\n";
}
这个例子很简单,但是假设我在结构中声明了几十个这样的类型,我并不总是想输入 B::type
,我该怎么做?
正如你所展示的那样
using anchor_point = B::anchor_point;
对每个相关成员重复。这必须在包含您对要涵盖的成员的所有使用的范围内只出现一次。
没有其他方法,特别是没有等效于 using namespace
的命名空间,这使得所有成员对不合格的名称查找可见。