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開発者が自分のクラスのデフォルト コンストラクターを作成するのに役立つ MACRO です。あなたの場合、次のようなコンストラクターを作成します。

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 に答える