我想在C程序中重现C++中的get风格的函数。在C++中,一个类中可以有两个函数用于赋值和设置值。在`C中有没有等同的方法?假设我有以下结构:
typedef struct test_help
{
int a;
void** numArrays;
struct test_help *next;
} help_node, *help;我有如下函数来访问结构体的值:
int access_int(help damaru) {
return damaru->a;
}所以我可以从结构中分配整数的值:
int y = access_int(damaru);但我想将值赋给结构的成员,如下所示:
help damaru;
int z=10;
damaru->int = z;我想摆脱对->的使用。我想写一个类似于赋值函数的函数。我想提醒您,使用左侧的访问功能会显示警告。
发布于 2011-11-27 23:58:18
你有一个拼写错误,这就是为什么你会得到一个语法错误,正确的方法是
damaru->a = z;要使一个访问函数像下面这样工作
void setA(help inHelp,int inA)
{
inHelp->a = inA;
}然后使用
setA(damaru,z);请记住,您使用的是C。C不是面向对象的,因此没有这种面向对象特性的直接映射。
发布于 2011-11-28 00:03:36
不要试图扭曲C语言来像C++一样工作,它们是使用完全不同的两种语言。除非您需要执行比简单赋值更多的任务,否则只需直接修改变量即可。无论如何,是的,你向它展示了如何做到这一点:
typedef struct {
int val;
} MyType;
void MyType_SetVal(MyType *mt, int i) {
mt->val = /* some complex expression involving `i` */;
}发布于 2011-11-28 00:01:58
你可以这样定义setter函数。
void set_int(help damaru, int value) {
damaru->a = value;
}https://stackoverflow.com/questions/8286811
复制相似问题