gpt4 book ai didi

c++ - 从 C++ 中的 int 派生不同且无法比较的类型

转载 作者:IT老高 更新时间:2023-10-28 22:01:55 25 4
gpt4 key购买 nike

我知道我不能从 int 派生,甚至没有必要,这只是我想到的解决以下问题的一个(非)解决方案。

我有一对 (foo,bar) 两者都在内部由 int 表示,但我想要 typeof(foo)无法与 typeof(bar) 相比。这主要是为了防止我将 (foo,bar) 传递给需要 (bar, foo) 的函数。如果我理解正确, typedef 不会这样做,因为它只是一个别名。什么是最简单的方法来做到这一点。如果我要为 foobar 创建两个不同的类,那么显式提供 int 支持的所有运算符会很乏味。我想避免这种情况。

最佳答案

作为自己编写的替代方法,您可以使用 boost/strong_typedef.hpp 中提供的 BOOST_STRONG_TYPEDEF 宏标题。

// macro used to implement a strong typedef.  strong typedef
// guarentees that two types are distinguised even though the
// share the same underlying implementation. typedef does not create
// a new type. BOOST_STRONG_TYPEDEF(T, D) creates a new type named D
// that operates as a type T.

所以,例如

BOOST_STRONG_TYPEDEF(int, foo)
BOOST_STRONG_TYPEDEF(int, bar)

关于c++ - 从 C++ 中的 int 派生不同且无法比较的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7009812/

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