gpt4 book ai didi

c - 了解列表元素的数据类型

转载 作者:行者123 更新时间:2023-11-30 14:30:16 26 4
gpt4 key购买 nike

我有 5 个元素的列表。我得到这个列表的第一个元素。我怎么知道这个元素 char* 或 int* 的数据类型是什么?

谢谢

最佳答案

你不能。

要么使用特定于类型的列表(一个列表用于字符指针,一个列表用于整数),或者使用结构体或 union 来存储两种类型的值以及指示类型的字段,如下所示:

#define TYPE_INT    1
#define TYPE_STRING 2

struct MyValue
{
int type; // TYPE_INT or TYPE_STRING
union
{
char *str;
int i;
} value;
};

并将该结构存储到您的列表中。

如果 C++ 是一个选项,请考虑使用 std::list 来存储特定于类型的数据,或者如果这不可能,请定义一个类似于上面的结构的类,在其中屏蔽不同的数据类型,如下所示(不包括对类型进行错误检查):

class MyValue
{
public:
enum ValueType
{
TYPE_NONE;
TYPE_INT,
TYPE_STRING
};
MyValue() : m_type(TYPE_NONE) {}
MyValue(char *s) : m_type(TYPE_STRING), m_value.str(s) {}
MyValue(int i) : m_type(TYPE_INT), m_value.int(i) {}
ValueType getType() const {return m_type;}
const char *getString() const {return m_value.str;}
int getInt() const {return m_value.int;}
private:
ValueType m_type;
union InternalValue
{
char *str;
int i;
};
InternalValue m_value;
};

关于c - 了解列表元素的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518878/

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