我正在读c ++代码,我无法理解它的一部分。这是代码:
BatteryBase.h
00001
00002 #ifndef __Battery_Base_H__
00003 #define __Battery_Base_H__
00004
00005 #include "CommonIncludes.h"
00006 #include "cConsumer.h"
00007 #define SUCCESS 1
00008 #define FAIL 0
00009 #define BATTERY_OUT 2
00010
00012
00017 class BatteryBase : public cSimpleModule
00018 {
00019 protected:
00020 double m_Energy;
00021 double m_CurrentEnergy;
00022 int m_State;
00023 cModule *pCoOrdinator;
00024 cArray ConsumerList;
00025 simtime_t lastTimeOut;
00026 cMessage *batteryOut;
00027 cConsumer *consumer;
00028
00029 public:
00030 Module_Class_Members(BatteryBase, cSimpleModule, 0); //constructo
00031
00032
00034
00036 virtual double GetTotalEnergy(void) const;
.
.
.
00088 virtual void handleMessage(cMessage *msg) = 0;
00089
00091
00094 virtual int RegisterCoordinator(void);
00095 };
00096
00097 #endif // __Battery_Base_H__
我无法理解第32行的含义。为什么BatteryBase类构造函数使用BatteryBase类作为参数? 你能帮帮我吗?
答案 0 :(得分:3)
Module_Class_Members(BatteryBase, cSimpleModule, 0); //constructor
这不是class
的构造函数。 class
的构造函数类似于:
BatteryBase() {}
Module_Class_Members
是一个MACRO,它帮助开发人员为他的类创建一个默认构造函数。在您的情况下,它会创建一个看起来像这样的构造函数:
BaseClass() : cSimpleModule() {}
但正如文档中所述,该宏已弃用,您应该将其替换为:
public:
BaseClass() : cSimpleModule() {}
答案 1 :(得分:0)
它是一个调用构造函数并设置继承关系的宏。 Module_Class_Members(BatteryBase, cSimpleModule, 0)
。这意味着类BatteryBase
派生自cSimpleModule
,它是一个抽象类,为任何模块提供基本功能。会再给你一个例子。例如,
class MyDerivedModule : public MyModule
{
Module_Class_Members (MyDerivedModule,MyModule, 0);
// and again user-specific methods
// follow
};`
希望它能回答你的问题。