C++ "unsigned"类

标签 c++ objective-c++

我正在编写一些用于处理小数数据(与 float 据相对)的目标代码,到目前为止有以下内容:

 class frac {
    public:
       int numerator;
       unsigned int denominator;
 };

我的问题是:
我如何配置我的类定义以便编写 unsigned frac foo;使对象与 frac foo; 相同, 除了 int numerator;会变成unsigned int numerator;

编辑: 虽然通常我只使用模板 ( frac <unsigned> ),但这段代码将进入更大的数学 API,我更希望最终产品使用 unsigned frac句法

扩展名: 许多答案都表明不可能实现 unsigned frac语法,但有谁知道为什么不呢? C++ 编译器是否有一些特殊的处理规则来适应现有的 unsigned类型,还是我还缺少其他东西?

最佳答案

您可以使用模板实现这些目标。例如

template <class Integral>
class frac {
  public:
    Integral numerator;
    std::make_unsigned_t<Integral> denominator;
};

http://en.cppreference.com/w/cpp/types/make_unsigned

你可以像这样使用这个类:

frac<int> signed;
frac<unsigned> nonnegative;

关于C++ "unsigned"类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36238736/

相关文章:

c++ - 如何阻止在 C++ 中从开始销毁循环中创建的对象?

xcode - 从main.mm调用C++库会导致编译错误-验证声明是否与宏冲突

c++ - objective-c 为什么 .mm 文件被认为是 int* 类型?

c++ - 调用类的成员函数时,类的对象损坏

c++ - 从另一个 exe 运行一个 Exe

c++ - 是否有解决方法来解决 C++ 中智能指针对指针算术的限制?

c++ - 在不使用基础的情况下从 C++ 获取包路径

c++ - 我可以在编译和链接时将 C++ 主函数和类与 Objective-C 和/或 C 例程分开吗?

STL - 如何在 Objective-C++ std::map 中使用 NSString 作为键

c++ - 类的动态分配数组