1
我遇到以下情况的问题:库(CardReader)实现了ISO7816协议并与智能卡(由我实现)进行通信。需要使用私有继承的设计帮助
我必须实现使用此库的专有协议。
在CardReader中有以下类APDURequest和APDUResponse。 CardReader类实现了所有的功能来发送和接收这些消息。
class APDUResonse
{
public:
/* ctor, copy ctor, move ctor, copy =, and move = operators. */
//...
int statusWord() const { return ...; }
int sw1() const { return ...; }
int sw2() const { return ...; }
};
在我的软件另一方面我有一个层次的独立implentare的消息,并从智能卡。这是基类的接口:
enum class MessageResKind { /* ... */ };
class IMessageRes
{
public:
virtual ~IMessageRes() {};
virtual int statusWord() const = 0;
virtual int sw1() const = 0;
virtual int sw2() const = 0;
virtual MessageResKind kind() const = 0;
virtual void print(std::ostream&) = 0;
};
现在我的疑问是,如何获得专业级的......我第一次尝试是:
class ADMessageResATR : public IADMessageRes, private iso7816::APDUResponse
{
public:
// import iso7816::APDUResponse ctor
using iso7816::APDUResponse::APDUResponse;
using iso7816::APDUResponse::sw1;
using iso7816::APDUResponse::sw2;
using iso7816::APDUResponse::statusWord;
ADMessageResKind kind() const
{
return ADMessageResKind::ATR;
}
void print() const {}
};
但我已经编译时错误:无法实例抽象类ADMessageResATR:状态字,SW1和SW2抽象
我认为导入iso7816 :: APDUResponse函数已经足够了。 –
在这种情况下,iso7816 :: APDUResponse析构函数需要虚拟吗? –