私は C++ プログラミングは初めてですが、C と Java で長い間働いてきました。私が取り組んでいるいくつかのシリアル プロトコルでインターフェイスのような階層を実行しようとしていますが、エラーが発生し続けます。
Undefined reference to 'operator delete(void*)'
(簡略化された)コードは次のとおりです。
PacketWriter.h:
class PacketWriter {
public:
virtual ~PacketWriter() {}
virtual uint8_t nextByte() = 0;
}
StringWriter.h:
class StringWriter : public PacketWriter {
public:
StringWriter(const char* message);
virtual uint8_t nextByte();
}
コンストラクターと nextByte 関数は StringWriter.cpp に実装されていますが、他には何も実装されていません。StringWriter を PacketWriter へのポインタから削除できるようにする必要があります。StringWriter のデストラクタを仮想かどうかに関係なく定義すると、他にもさまざまな同様のエラーが発生します。私が初心者として見落としているのは単純な問題だと確信しています。
また、Windows で avr-g++ を使用して、AVR チップ用にこれを書いています。
ありがとう