我目前正在制作一个小型库,它可以访问random.org并获得随机字符串或整数。尽管我已经遇到了一个小问题,但是设计明智,而且我无法决定哪两种方法最好,所以我会写下我关于两者的想法,并提出我认为与两者都相关的问题。如何从void指针返回一个类型的指针,当类型已知
我现在有这样一个结构:
typedef struct {
char **array;
size_t row;
size_t col;
size_t size;
} MemoryStruct;
这是我的“问题”的来源,因为我现在已经在整数处理到我的图书馆加入。
可以看出,指针当前是一个字符指针,因为我希望能够处理污点整数和字符,我应该添加另一个指针 - 一个整数指针 - 或者我应该使它成为一个空指针并使一个函数,将返回正确的指针类型?
增加一个整数指针将是最简单的,但我不确定在未来的某个时间点可能会使用我的库的人有多明显,这就是他的程序出现故障的原因,因为他在结构中使用了错误的指针。
然而,添加一个void指针意味着我将不得不做一个基于上下文的函数,它将返回一个正确类型的指针(如果这甚至可能 - 我真的不知道它是否是) ,这导致了这样的问题:
哪个返回类型可以返回不同种类的指针的函数? (......很明显,是一个无效的指针!)但是我仍然没有将想要的类型包括在内以方便使用我的库的程序员 - 这是将它放入伪代码中,我想要做什么。
pointer-with-type-info *fun(MemoryStruct *memory, RandomSession *session)
switch case on session->type
return pointer of appropriate type
它应该加在这里,从session-> type可以推断出指针应该是哪个类型。
非常感谢您阅读本文。
是否可以使用C++和模板,还是仅限于使用C? – spartygw
我宁愿将它保留在C中,因为我对此更加适应,而不是进入C++和模板。 –
那么你坚持使用void * –