【发布时间】:2021-07-07 09:27:04
【问题描述】:
我有一个名为NumBase 的类,我想通过特殊的自定义来初始化该类的对象,如下所示:
NumBase<8> Num1 = 2312347;
NumBase<10> Num2 = 23123479;
NumBase<16> Num3 = 23F13A47;
NumBase<12> Num4 = 2312A47;
有没有办法像这样初始化?
或者
NumBase(8) Num1 = 2312347;
NumBase(10) Num2 = 23123479;
NumBase(16) Num3 = 23F13A47;
NumBase(12) Num4 = 2312A47;
还有
NumBase<8> Num1(2312347);
NumBase<10> Num2(23123479);
NumBase<16> Num3(23F13A47);
NumBase<12> Num4(2312A47);
但不是这样:
NumBase<16> Num3("23F13A47");
或
NumBase<16> Num3 = "23F13A47" ;
换句话说,我不想使用字符串。
如果可以,我该怎么做?
【问题讨论】:
-
如果您可以为十六进制文字引入正确的语法:
0x23F13A47,那么就不会有问题。 -
02312347(oct)、23123479(dec) 和0x23F13A47(hex) 有什么问题? -
我认为这不可能。
23F13A47不是单个标记,编译器将其视为23和自定义文字F13A47 -
整数字面量有十进制、十六进制和八进制:en.cppreference.com/w/cpp/language/integer_literal
-
请告诉我们为什么您不想使用字符串并指定限制:您需要支持哪些基础?
2..36?也许也是一元的?
标签: c++