gpt4 book ai didi

c++ - 不确定的函数返回类型

转载 作者:太空狗 更新时间:2023-10-29 22:59:10 24 4
gpt4 key购买 nike

我正在使用 C++ 语言开发 Adob​​e Type 1 字体的解析器。当我尝试解码 DICT 数据时出现问题。

DICT中的操作数,以字节序列形式存储在PDF文件中,可以是整数,也可以是实数。

我定义了一个函数,其原型(prototype)是getOperandVal(unsigned char* buf),用于将序列解码为数字。问题就出现了。

在解析buf之前,我们无法知道buf是实数还是整数。所以无法确定返回值的类型,应该是int还是double

一种解决方案是使用结构作为返回值类型。结构如下:

typedef struct
{
int interger;
double real;
bool bReal;
}RET;

那么函数原型(prototype)为:

RET getOperandVal(unsigned char* buf);

但我认为它并不紧凑。首先,使用起来不方便。其次,当数据量很大时,程序运行速度会变慢。

谁能给我一个更好的解决方案?模板能做到吗?

非常感谢!

添加:程序会将操作数的值转成字节序列,以便编辑后改写到文件中。请考虑这个要求。

最佳答案

您不能使用模板,因为您在编译时不知道将返回什么类型。

但是你可以使用 union :

struct Int_real {
union {
int integer;
double real;
};
bool is_real;
};

一个很好的想法是通过使其安全来改进它(只允许访问活跃的 union 领域)。

很快(希望如此),您将能够使用 std::any

关于c++ - 不确定的函数返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37875581/

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