如何调用Add,Subs,Div和Display函数?

typedef struct 
{ 

    void (*Add)(int,int);
    void (*Subs)(int,int);
    void (*Div)(int,int);
    void (*Display)(void);
} Calculator;

typedef struct CalculatorData
{

    Calculator*  data;
}CalculatorData;

static CalculatorData aritmaticOperation = {

    .data= NULL
};

解决方案:

Add, Subs, DivDisplay 成员不是函数。 它们是指向函数的指针,在 aritmaticOperation 对象,它们没有被初始化–没有任何东西可以调用。

给定一个适当初始化的 aritmaticOperation 对象,您将调用 Add 例如通过。

int result = aritmaticOperation.data->Add( x, y ) ; 

然而在这种情况下,数据是NULL,所以上面会导致运行时错误。

你需要一个 Calculator 对象,成员指针设置为 实际 职能。

给予说:

int MyAdd( int a, int b ) { return a + b ; }

以及其他操作的类似情况,那么

static Calculator MyCalculator = { MyAdd, MySub, MyDiv, MyDisplay } ;
static CalculatorData aritmaticOperation = { .data= &MyCalculator } ;

那么。

int result = aritmaticOperation.data->Add( x, y ) ; 

将有效地调用 MyAdd().

给TA打赏
共{{data.count}}人
人已打赏
未分类

捆绑器。没有找到命令

2022-9-23 8:04:39

未分类

velocity.exception.ParseErrorException.在<未知模板&gt处遇到"<EOF>"。在<未知模板>处遇到"<EOF>",当#end后面跟着_时。

2022-9-23 8:04:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索