gpt4 book ai didi

c++ - 如何概括一个接口(interface)以要求某些元组的返回值?

转载 作者:行者123 更新时间:2023-11-28 07:50:32 25 4
gpt4 key购买 nike

我正在使用对 boost and std::tuple<> 有良好支持的 SOCI 库.

我的意图是定义一个名为SOCI_Streamable抽象接口(interface),它需要一个返回一些元组 的方法。

我让它在 gcc 4.7.2 中用于特定元组,但我需要帮助抽象此接口(interface)以用于任何元组

换句话说,我想将此要求转换为代码:一个类满足 SOCI_Streamable 的要求,如果它可以返回某种 std::tuple - 我不关心什么样的。

只要满足要求,对下面的代码进行重大更改就可以了。我怀疑需要某种模板代码,甚至可能需要 CRTP,但我不确定。

#include<tuple>

// want to generalize next line to any std::tuple<>
typedef std::tuple<int const&,char const> some_tuple;

class SOCI_Streamable
{
public:
virtual some_tuple obj_as_tuple() const = 0;
};

class Foo :
public SOCI_Streamable
{
public:
virtual some_tuple obj_as_tuple() const
{
return std::forward_as_tuple( m_int, m_char );
}
private:
int m_int;
char m_char;
};

int main( int argc, char* argv[] )
{
}

最佳答案

template <class A,class B>
class SOCI_Streamable
{
public:
typedef std::tuple<A,B> Tuple;
virtual Tuple obj_as_tuple() const = 0;
};

class Foo :
public SOCI_Streamable<int const&,char const>
{

如果您可以在实现者级别指定类型,这应该可行。但这确实将单个界面变成了一系列界面。让我看看是否有更好的方法.

关于c++ - 如何概括一个接口(interface)以要求某些元组的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889613/

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