3

我正在阅读 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 类作为参数?请你帮帮我?

4

2 回答 2

3
Module_Class_Members(BatteryBase, cSimpleModule, 0); //constructor

这不是您的class. 您的构造函数class将类似于:

BatteryBase() {}

Module_Class_Members是一个帮助开发人员为他的类创建默认构造函数的宏。在您的情况下,它会创建一个构造函数,该构造函数应如下所示:

BaseClass() : cSimpleModule() {}

但正如文档中所说,该宏已被弃用,您应该将其替换为:

public:
    BaseClass() : cSimpleModule() {}
于 2013-08-18T08:48:03.913 回答
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
};` 

希望它能回答你的问题。

于 2013-08-18T08:17:54.420 回答