gpt4 book ai didi

c++ - 覆盖参数包声明和扩展位点

转载 作者:行者123 更新时间:2023-12-02 18:24:45 25 4
gpt4 key购买 nike

我有一个简单的界面 setter :

template<typename Interface>
struct FrontEnd
{
virtual void inject(Interface*& ptr, Client* client) = 0;
}

我想通过这样的参数包来实现这些接口(interface):

template<typename ... Is>
struct BackEnd : public FrontEnd<Is>...
{
void inject(Is*& ptr, Client* client) override
{
ptr = someStuff<Is>.get(client);
}
};

但是,此操作失败,参数包未使用“...”扩展。我在cppref中找不到类似的东西。我不知道扩展基因座应该去哪里(假设这甚至是合法的,我倾向于不合法)。 知道如何为参数包中的每种类型提供覆盖吗?

最佳答案

你可能想要这样的东西

  template<typename Is>             
struct OneBackEnd : public FrontEnd<Is>
{
void inject(Is*& ptr, Client* client) override { /* whatever */ }
};

template<typename ... Is>
struct BackEnd : public OneBackEnd<Is>...
{
using OneBackEnd<Is>::inject...;
};

关于c++ - 覆盖参数包声明和扩展位点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70384034/

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