提问人:glades 提问时间:4/15/2022 最后编辑:user17732522glades 更新时间:4/15/2022 访问量:74
在非成员函数中将嵌套名称引入作用域
Bring nested name into scope in non-member function
问:
我有一个结构 B,其中包含作为嵌套名称的类型声明。如何使用 -指令将范围引入另一个函数?我基本上想按原样访问类型而不限定它(就像从成员函数中一样)。我尝试了以下方法(见评论):anchor_point
anchor_point
using
#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
答:
2赞
user17732522
4/15/2022
#1
正如你所展示的,你可以做到
using anchor_point = B::anchor_point;
对每个相关成员重复。这必须在包含您要涵盖的成员的所有使用范围中仅出现一次。
没有其他方法,特别是没有等效的 for 命名空间,它使所有成员对非限定名称查找可见。using namespace
评论
B
namespace
class
anchor_point
B
using anchor_point = B::anchor_point;