gpt4 book ai didi

c++ - tuple_size 和元组的继承类?

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:51 24 4
gpt4 key购买 nike

我有以下代码:

class TR_AgentInfo : public tuple<
long long, //AgentId
string, //AgentIp
>
{
public:
TR_AgentInfo() {}
TR_AgentInfo(
const long long& AgentId,
const string& AgentIp,
)
{
get<0>(*this) = AgentId;
get<1>(*this) = AgentIp;
}

long long getAgentId() const { return get<0>(*this); }
void setAgentId(const long long& AgentId) { get<0>(*this) = AgentId; }

string getAgentIp() const { return get<1>(*this); }
void setAgentIp(const string& AgentIp) { get<1>(*this) = AgentIp; }
};

现在我想使用这段代码:

int count = tuple_size<TR_AgentInfo>::value;

但是 gcc 给出了这个错误:

error: incomplete type std::tuple_size<TR_AgentInfo> used in nested name specifier

现在我能做什么?

最佳答案

如果您只想让您的一个类使用 std::tuple_size,您可以简单地提供一个特化:

namespace std
{
template<> struct tuple_size<TR_AgentInfo>
{
static const size_t value = 2;

// alternatively, `tuple_size<tuple<long long, string>>::value`
// or even better, `tuple_size<TR_AgentInfo::tuple_type>::value`, #1
};
}

明确允许您向命名空间 std 添加专门化,正是为了像您这样的情况。

如果您的实际类本身是模板化的,您只需将 2 替换为适当的结构即可。例如,对于建议 #1,您可以将 tuple_type 的 typedef 添加到您的类中。给这只猫剥皮的方法有很多。

关于c++ - tuple_size 和元组的继承类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967746/

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