gpt4 book ai didi

c++ - 结构和对象创建

转载 作者:行者123 更新时间:2023-11-28 08:00:06 25 4
gpt4 key购买 nike

我正忙于一项任务,我必须创建一个结构,并使用该结构创建和删除一个对象。

下面是我如何创建内部有函数的结构。

struct Operation
{
char op;
double (*apply)(Operation*, double,double); // takes two doubles
}

我完全理解。现在必须创建对象。

Operation* Make(char op)
{
Operation* ret = new Operation;
ret -> op = op;
ret -> apply = doit;//doit is a norther function
return ret;
}

我知道“->”歌剧等同于说:

(*ret).op = op;

以及删除对象;

void BrakeObject(Operation& o)
{
delete o;
o = NULL;
}

函数(应用)看起来和基本函数一样吗?这是数组吗?

 Operation* ret = new Operation;

对象是什么?它只是一个函数吗?

最佳答案

为什么要动态分配?为什么不简单地:

Operation Make(char op)
{
Operation ret = {op, doit};
return ret;
}

或者,如果您使用的是 C++11,只需:

Operation Make(char op)
{
return {op, doit};
}

这两种情况都不需要再手动删除

还有,为什么apply要进行另一个操作?评论说“需要两次 double ”,所以:

double (*apply)(double,double);

对我来说更有意义。另外,doit 从何而来?将 apply 函数也作为参数传递不是更有意义吗?这是包含所有建议更改的程序:

struct Operation
{
char op;
double (*apply)(double, double);
}

Operation Make(char op, double (*apply)(double, double))
{
Operation ret = {op, apply};
return ret;
}

double add(double x, double y)
{
return x + y;
}

Operation op_add = Make('+', add);

关于c++ - 结构和对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11708079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com