通用结构访问的有效且实用的方法?

发布于 2024-10-13 15:23:51 字数 449 浏览 1 评论 0原文

我有以下内容:

Struct A {
   char a;
   char b[10];
   int c;
   float d;
}

Struct B {
   float d;
   char b[10];
   char a;
   int c;
   bool e;
}

我想创建一个接受 struct A 或 B 来访问元素的通用函数,例如:

void SetD(A a, float f) { a.d = f; }

将有许多不同的结构(大多数具有相同的元素)和许多对它们进行操作的函数。

我试图概括访问权限,这样我就不必将每个方法复制到每个结构中,从而导致重复的代码。不确定 instanceof 还是模板在这里最好。关于如何优雅地实现这一点有什么想法吗?如果我可以提供更多说明,请告诉我。

I have the following:

Struct A {
   char a;
   char b[10];
   int c;
   float d;
}

Struct B {
   float d;
   char b[10];
   char a;
   int c;
   bool e;
}

and I want to make a generic function that accepts struct A or B to access elements like:

void SetD(A a, float f) { a.d = f; }

There will be many different Structs (most with the same elements) and many functions to operate on them.

I'm trying to generalize the access so I don't have to copy each method into each Struct resulting in duplicate code. Not sure if instanceof or templates would be best here. Any ideas on how to implement this elegantly? Let me know if I can provide more clarification.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴梦长久 2024-10-20 15:23:51

怎么样:

template< typename T > void setD( T &t, float f ) { t.d = f; }

注意struct 关键字是小写的,并且结构在右括号后面需要半色 ;

How about:

template< typename T > void setD( T &t, float f ) { t.d = f; }

Note that the struct keyword is lowercase, and that structs require a semicolor ; after the closing bracket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文