gpt4 book ai didi

C++:继承与。包含模板类

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:10 25 4
gpt4 key购买 nike

我有以下结构:

template <typename T>
struct Odp
{
T m_t;
};

我想对其进行专门化处理,以便我可以添加一个运算符,以便该类型可以很好地与 STL 集配合使用。 (我不能直接修改 Odp;它是遗留代码。)以下是我看到的两种方法:

struct Ftw : public Odp<int>
{
bool operator==(const Ftw& rhs)
{
return m_t == rhs.m_t;
}
};

struct FtwContain
{
Odp<int> odp;
bool operator==(const FtwContain& rhs)
{
return odp.m_t == rhs.odp.m_t;
}
};

有什么理由比第一个更喜欢第二个吗?第一种方法似乎允许更简洁的代码:

Ftw ftw;
ftw.m_t = 2;

FtwContain ftwContain;
ftwContain.odp.m_t = 2;

(此外,我可能对“模板特化”一词的含义感到困惑。)

最佳答案

我认为不需要创建新类型 - 只需编写一个免费函数即可:

template <typename T>
bool operator==( const Odp<T> & a, const Odp <T> & b ) {
return a.m_t == b.m_t;
}

关于C++:继承与。包含模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407541/

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