#include <iostream>
enum E_MACHINE_TYPE
{
MACHINE_TYPE_1R = 0x89,
MACHINE_TYPE_2R,
MACHINE_TYPE_MAX
};
enum E_UNIT_TYPE
{
UNIT_TYPE_CONVEYOR,
UNIT_TYPE_HEAD,
UNIT_TYPE_MAX
};
struct T_CONVEYOR_PARAM
{
int clampType;
int loadSpeed;
bool operator== (const T_CONVEYOR_PARAM& other)
{
}
};
struct T_HEAD_PARAM
{
int headType;
};
// 共通通信パラメータ.
class AParam
{
public:
AParam::AParam(){}
AParam::~AParam(){}
};
// ホスト送信パラメータ.
// 別アプリケーションのホストへ情報を送信するときに使用するパラメータ.
class SendHostParam : public AParam
{
public:
SendHostParam::SendHostParam(){}
SendHostParam::SendHostParam(E_MACHINE_TYPE type):AParam(), m_machineType(type){}
SendHostParam::~SendHostParam(){}
void SetMachineType(E_MACHINE_TYPE& type){m_machineType = type;} E_MACHINE_TYPE GetMachineType(){return m_machineType;}
private:
E_MACHINE_TYPE m_machineType;
};
// ユニット送信パラメータ.
// 同アプリケーション内のユニットへ送信するときに使用するパラメータ.
class SendUnitParam : public AParam
{
public:
SendUnitParam::SendUnitParam(){}
SendUnitParam::SendUnitParam(T_CONVEYOR_PARAM param):AParam(), m_destUnit(UNIT_TYPE_CONVEYOR){}
SendUnitParam::SendUnitParam(T_HEAD_PARAM param):AParam(), m_destUnit(UNIT_TYPE_HEAD){}
SendUnitParam::~SendUnitParam(){}
void SetConveyorParam(T_CONVEYOR_PARAM& param){m_convParam = param;} T_CONVEYOR_PARAM GetConveyorParam(){return m_convParam;} E_UNIT_TYPE GetDestUnit(){return m_destUnit;}
private:
E_UNIT_TYPE m_destUnit;
T_CONVEYOR_PARAM m_convParam;
T_HEAD_PARAM m_headParam;
};
// 通信クラス.
class MachineCommunication
{
#define DEST_HOST (0x9999)
#define DEST_UNIT_CONVEYOR (0x8888)
#define DEST_UNIT_HEAD (0x8886)
public:
MachineCommunication::MachineCommunication(){}
MachineCommunication::~MachineCommunication(){}
// ホストに情報を送信する. bool SendHost(SendHostParam* param) { // DEST_HOST宛てにSendHostParamを送信(処理省略). } // 装置内ユニットに情報を送信する. bool SendUnit(SendUnitParam* param) { if(DEST_UNIT_CONVEYOR == param->GetDestUnit()) { // DEST_UNIT_CONVEYOR宛てにSendUnitParamを送信(処理省略). } else if(DEST_UNIT_HEAD == param->GetDestUnit()) { // DEST_UNIT_HEAD宛てにSendUnitParamを送信(処理省略). } else { return false; } }
};
問1:E_MACHINE_TYPEに定義を1つ増やす場合に問題があるかないかとその理由について記述
問2:E_UNIT_TYPEに定義を1つ増やす場合に問題があるかないかとその理由について記述
↑問1,2は何故定義を増やすと問題があるのでしょうか?そもそもどういう知識が必要ですか?
問3:MACHINE_TYPE_2Renumの整数値を答えよ
→何故0x90ではないのでしょうか?
問4:構造体を比較できるよう、構造体内の変数が完全一致した場合trueとなるように処理を埋めよ
問5:SendUnitParamクラスにSetDestUnit関数を値渡しで追加せよ
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/07 13:21