【发布时间】:2017-07-18 16:35:49
【问题描述】:
在编程方面我绝对是新手,我正在尝试通过解决 C++ 中的一些简单“问题”来自学基础知识。
我已经在网上搜索了我的问题的确切答案,然后将其发布到这里,但到目前为止还没有找到,但这可能是因为 (1)。
所以,我正在寻找一种声明类成员的方法,该类成员会自动从同一类的其他成员中计算出来,以便可以像显式定义的类成员一样使用计算出的类成员。例如,想象一个名为 bio 的结构,它具有属性/成员 bio.numberofhands、bio.fingersperhand 以及最后的属性 bio.totalfingers,它会自动从上述成员中计算出来。
这是最接近我想要实现的目标的示例:
#include <iostream>
typedef struct creature {
int numberofhands;
int fingersperhand;
int totalfingers();
} creature;
int creature::totalfingers()
{
return numberofhands * fingersperhand;
};
int main()
{
creature human;
human.numberofhands = 2;
human.fingersperhand = 5;
printf("%d",human.totalfingers());
return(0);
}
真正让我烦恼的是,我必须将计算出的值与明确定义的值区别对待,即我必须在其后面加上“()”。 如何更改代码,以便我可以使用:human.totalfingers 而无需明确定义?
【问题讨论】:
-
C++ 中不需要
typedef struct。 -
您可以将您的普通会员更改为也使用
(),或者使用operator int()创建一个代理对象,但如果没有帮助,最后一个将无法使用printf的省略号。跨度> -
我实际上不会这样做,但是对于有趣的事情,您可以为要调用的每个函数定义一个标记,其语法与变量
#define totalNoOfFingers creature::totalfingers()相同。