メッセージクラスの現在の実装を次のように変更します。
class Message
{
public:
Message(uint8* buffer, uint8 length) : m_contents(buffer), m_length(length) { }
uint8 getLength() const {return m_length; }
const uint8* getData() const { return m_contents; }
protected:
uint8* m_contents;
uint8 m_length;
};
コンストラクターで長さのみを取得し、コンストラクターで動的に割り当て、デストラクタで削除します。
私はそれが次のように見えるべきだと思います:
Message(uint8 length) : m_length(length)
{
m_contents = new uint8[length];
}
~Message()
{
delete [] m_contents;
m_contents = NULL;
}
追加情報:メッセージオブジェクトはシリアルポートオブジェクトに渡され、シリアルポートオブジェクトが送信します。また、複数のCustomMessageクラスにサブクラス化されます。
私の質問は次のとおりです。この簡単な例では、ある種のスマートポインタを使用する理由はありますか?例が役立ちます。ありがとう!