【发布时间】:2013-01-23 15:26:51
【问题描述】:
我目前正在制作一个小型库,可以访问 random.org 并获取随机字符串或整数。不过,在设计方面,我现在遇到了一个小问题,我无法决定我的两种方法中哪一种是最好的,所以我会写下我对这两种方法的想法,并提出我认为与这两种方法相关的问题.
我目前有一个这样的结构:
typedef struct {
char **array;
size_t row;
size_t col;
size_t size;
} MemoryStruct;
这是我的“问题”的根源,因为我现在已将整数处理添加到我的库中。
可以看出,该指针当前是一个 char 指针,并且由于我希望能够处理印迹整数和字符,我应该添加另一个指针 - 整数指针 - 还是应该将其改为 void 指针并创建一个返回正确类型指针的函数?
添加一个整数指针将是最简单的,但我不确定这对于将来可能会使用我的库的人来说有多么明显,这就是他的程序段错误的原因,因为他在结构中使用了错误的指针。
然而,添加一个 void 指针意味着我将不得不做一个基于上下文的函数,该函数将返回一个正确类型的指针(如果这甚至可能 - 老实说,我不知道它是否是),这导致了一个问题:
可以返回不同类型指针的函数具有哪种返回类型? (......很明显,一个 void 指针!)但是我仍然没有包含想要的类型,以便使用我的库的程序员轻松使用 - 这是我想做的伪代码.
pointer-with-type-info *fun(MemoryStruct *memory, RandomSession *session)
switch case on session->type
return pointer of appropriate type
这里应该加上,从session->type可以推断出指针应该是什么类型。
提前感谢您阅读本文。
【问题讨论】:
-
是否可以使用 C++ 和模板,还是仅限于使用 C?
-
我更愿意将其保留在 C 中,因为我更愿意这样做,而不是使用 C++ 和模板。
-
那么你就无法使用 void*
标签: c types void-pointers