首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中重现C++类风格的get函数?

如何在C中重现C++类风格的get函数?
EN

Stack Overflow用户
提问于 2011-11-27 23:56:27
回答 4查看 214关注 0票数 0

我想在C程序中重现C++中的get风格的函数。在C++中,一个类中可以有两个函数用于赋值和设置值。在`C中有没有等同的方法?假设我有以下结构:

代码语言:javascript
复制
typedef struct test_help
{
    int      a;
    void** numArrays;
    struct test_help *next;  
} help_node, *help;

我有如下函数来访问结构体的值:

代码语言:javascript
复制
int access_int(help damaru) {
    return damaru->a;
}

所以我可以从结构中分配整数的值:

代码语言:javascript
复制
 int y = access_int(damaru);

但我想将值赋给结构的成员,如下所示:

代码语言:javascript
复制
help damaru;
int z=10;
damaru->int = z;

我想摆脱对->的使用。我想写一个类似于赋值函数的函数。我想提醒您,使用左侧的访问功能会显示警告。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-27 23:58:18

你有一个拼写错误,这就是为什么你会得到一个语法错误,正确的方法是

代码语言:javascript
复制
 damaru->a = z;

要使一个访问函数像下面这样工作

代码语言:javascript
复制
 void setA(help inHelp,int inA)
 {
    inHelp->a = inA;
 }

然后使用

代码语言:javascript
复制
 setA(damaru,z);

请记住,您使用的是C。C不是面向对象的,因此没有这种面向对象特性的直接映射。

票数 4
EN

Stack Overflow用户

发布于 2011-11-28 00:03:36

不要试图扭曲C语言来像C++一样工作,它们是使用完全不同的两种语言。除非您需要执行比简单赋值更多的任务,否则只需直接修改变量即可。无论如何,是的,你向它展示了如何做到这一点:

代码语言:javascript
复制
typedef struct {
    int val;
} MyType;

void MyType_SetVal(MyType *mt, int i) {
    mt->val = /* some complex expression involving `i` */;
}
票数 5
EN

Stack Overflow用户

发布于 2011-11-28 00:01:58

你可以这样定义setter函数。

代码语言:javascript
复制
void set_int(help damaru, int value) {
    damaru->a = value;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8286811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档