[H8-ML(6042)] Re: 3069でROM 起動時にダンマリ?
From: ida@xxxxxxxxxxxxxxxxxxxx
Date: 2006年08月09日(水)13時53分58秒
こんにちは、井田です。
安部さん、回答ありがとうございます。

>前半のROMに焼くと動かないのと、後半の"Seq1A1"が表示されないのは別問題でしょうか?

いえいえ、同じ問題です。
ROMに焼いて動く時もあれば、動かない時もあります。
動かなくなる時に、"Seq1A1"が表示されないで止まっていると思われます。

>・CUI::Create()はstatic宣言されてるメソッドだと思いますが、m_pInputAはCUIのメンバではないの
> でしょうか、メンバであればCUI::Create()内でソースのように直接参照できないと思うのですが

m_pInputAはCUIのプライベートのポインタで宣言しています。(下記クラス定義参照願います)

>・CInputBaseからCInputAを継承する際に SetLimit()をオーバーライドしたりしてませんよね

CInputAでSetLimit()をオーバーライドはしていません。(下記クラス定義参照願います)

>・CInputBaseとCInputAのGetMaxValue()とGetMinValue()は virtual 付けてないと必ず
> CInputBase側のメソッドが呼ばれますが、付けてますか?

CInputAのGetMaxValue()とGetMinValue()に「virtual」が付いていなかったので、
付けて確認してみましたが結果は同じでした。(下記クラス定義参照願います)

RAMでは起動するが、ROMでは起動しない時もあれば、起動する時もあるのは、
内部ROM、RAM、外部RAMの容量とかに影響するものでしょうか?

クラス定義は以下のようにしています。
≪InputBase.h≫
class CInputBase
{
	friend class CUI;
protected:
//コンストラクタ
	CInputBase();
	virtual ~CInputBase();

//インターフェイス
protected:
	virtual int GetMaxValue()=0;
	virtual int GetMinValue()=0;

//操作
private:
	void SetLimit();
};


≪InputA.h(InputB.h)≫
class CInputReal  : public CInputBase
{
private:
	friend class CUI;
//構築・消滅
	CInputReal();
	virtual ~CInputReal();

//操作
	//オーバーライド

//	int GetMaxValue();	//変更前
//	int GetMinValue();	//変更前
	virtual int GetMaxValue();	//変更後
	virtual int GetMinValue();	//変更後
};


≪UI.h≫
class CInputBase;
class CInputA;
class CInputB;

class CUI
{
	//宣言
private:
	//コンストラクタ
	CUI();
	virtual ~CUI();
	//操作
public:
	static void Create();
	static void Delete();

private:
	//クラス属性
	static CInputA* m_pInputA;	// インプットクラスへのポインタ
	static CInputB* m_pInputB;	// インプットクラスへのポインタ
};
スレッド概略
[6040(R)](起点)
 └[6041(U)]
   └[表示中]
     ├[6043(1)]
     └[6044(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]