小编jes*_*les的帖子

用于访问多态类型的 std::visit 类函数

我最近一直在尝试 C++17 的std::variantstd::visit,我发现它非常强大。我特别喜欢在多个变体对象上创建访问者模式的能力。这是我的意思的一个例子:

std::variant<int, float, char> v1 { 's' };
std::variant<int, float, char> v2 { 10 };

std::visit(overloaded{
        [](int a, int b) { },
        [](int a, float b) { },
        [](int a, char b) { },
        [](float a, int b) { },
        [](auto a, auto b) { }, // << default!
    }, v1, v2);
Run Code Online (Sandbox Code Playgroud)

有关完整详细信息,请参阅https://www.bfilipek.com/2018/09/visit-variants.html。鉴于此,我想知道是否可以基于多态类型而不是变体对象编写类似的代码。

想一想我们使用动态多态和父对象来编写通用接口的场景。然后我们要实现依赖于几种多态类型的某个功能,即像

void fun(IFoo* ptr_foo, IBar* ptr_bar) {
  {
    Foo1* child_foo = dynamic_cast<Foo1*>(ptr_foo);
    Bar1* child_bar = dynamic_cast<Bar1*>(ptr_bar);
    if(child_foo && child_bar) …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism visitor variant

6
推荐指数
1
解决办法
316
查看次数

更改 VSCode 中搜索栏的宽度

是否可以更改 VSCode 中搜索栏的宽度?即在使用“转到文件...”(workbench.action.quickOpen)或切换最近的文件(workbench.action.openNextRecentlyUsedEditorInGroup)时打开的典型下拉选择菜单。

我目前这样做的动机是能够完全看到被截断的长文件名。

settings visual-studio-code

5
推荐指数
1
解决办法
221
查看次数