目标C++ "unsigned"类
objective C++ "unsigned" classes
我正在编写一些用于处理小数数据(与浮点数据相反)的对象代码,到目前为止,我已经完成了以下操作:
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
类型,或者我还缺少什么?
您可以使用Templates实现这些功能。例如
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;
我认为这是不可能的。您可以使用模板实现类似的功能:
template<typename T>
class frac_template
{
public:
T numerator;
unsigned int denominator;
};
class frac : public frac_template<int> {};
class ufrac : public frac_template<unsigned int> {};
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- C++A*算法并不总是在路径中具有目标节点
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 为测试目标创建具有不同源文件夹的文件
- 使用源向量作为目标
- 是否可以用C++/WinRT将windows 10.0.14393作为目标
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 在 CMake 中为每个目标设置编译器/链接器标志
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 CMake 中对目标依赖项进行分组?
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 如何为包含头文件的目标编写生成文件?
- 线性优化目标函数中的绝对值
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 字符串函数在目标C++上运行时C++返回空
- 目标C++ "unsigned"类