0
我正在使用對boost and std::tuple<>有很好支持的SOCI庫。如何推廣一個接口來要求某個元組的返回值?
我的目的是定義一個抽象接口稱爲SOCI_Streamable
它要求返回一些元組的方法。
我有它在GCC 4.7.2工作了特定的元組,但我需要幫助抽象此接口爲任何元組工作。
換句話說,我想將這個需求轉換爲代碼:如果一個類能夠返回某種std :: tuple,我就不會滿足SOCI_Streamable
的要求 - 我不在乎是什麼類型的。
只要符合要求,以下代碼的重大變化就沒有問題。我懷疑某種模板代碼,或者甚至需要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[])
{
}
您可以指定實施課程級別的類型嗎? –
@KarthikT肯定,但問題仍然是在界面層面上將其綁定到一些抽象界面......如果你有一個想法如何做到這一點,請發表一個答案 - ty – kfmfe04
你想要能夠將該對象投射到SOCI_Streamable然後調用接口?我看不出你如何做到這一點,因爲在編譯時無法知道返回類型。或者你可以基礎類是一些模板化的SOCI_Streamable實例嗎? – rici