目前手上有一个将用 C 实现的科学计算程序重写为 C++实现的任务,需要将其中大量的 C 风格实现改为 OOP 风格实现,但是目前遇到了一些实现上的问题
原始程序中使用struct
维护一个全局计算数据结构,所有的计算 kernel 又会单独使用一系列的struct
来维护每个 kernel 所需要的参数。这些 kernel 参数结构体在用于保存全局计算的结构体中使用了void *
进行管理,然而在迁移到 C++的过程中要求不能使用void *
,故问一问各位大佬如何在 C++中优雅且低成本地实现类似void *
的功能
在原始的程序中,全局计算结构体存在这样的成员
typedef struct {
// ...
void *something[N];
// ...
} GlobalStruct;
其中这个void *
可能对应多个不同的结构体,各个结构体之间相互有不同的成员,例如
typedef struct {
int a;
int b;
short c;
} A;
typedef struct {
int a;
int b;
double d;
} B;
typedef struct {
int a;
int b;
} C;
void kernel_A(A *data);
void kernel_B(B *data);
void kernel_C(C *data);
请问有什么方法可以在 C++程序中实现在上面void *
的效果。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.