福井といいます。
現在、HEWを使用してH8プログラムを書いていますが、
今回、C++を使用して設計してみようと思っています。
しかし、C++の特徴のひとつであるデータの隠蔽に
関して、わからない点がありました。
たとえば、LEDをON/OFFするクラスLEDを作ったとして、
メンバ関数にvoid LedON(BOOL onoff)というのを加えたとします。
onoffはLEDを点灯させるか、消灯させるかの引数です。
LedONは下記のようになると思います。
void LedON(unsigned char onoff) // onoff= 1:点灯,0:消灯
{
LED = onoff; // LEDは実際にLEDが接続されるポート
}
LEDが接続されるポートをこの関数からのみのアクセスとすることで
データの隠蔽が達成できると思っています。
ここで疑問に思ったのがLEDが接続されるポートをどうやって
Privateなメンバ変数として宣言し、アドレスを指定すればいいかということです。
class Led {
unsigned char LED; // ←このメンバ変数のアドレスを指定したい
public:
void LedON(BOOL onoff);
}
今はHEWで自動作成される iodefine.h を使用してレジスタアクセスしています。
しかし、アドレスの指定には#defineが使用されています。
これでは、メンバ変数としては宣言できないような気がします。
どなたかC++で設計されている方、またはC++に詳しい方、
メンバ変数へのレジスタの宣言方法をご教授ください。
よろしくお願いします。
長文ですみません。