OK、もう一度試してみます。私は経験豊富なC++プログラマーではないので、何かにちょっとした助けが必要です。コンパイルされない、非常に単純なコードがあります。私が知りたいのは、コードがコンパイルされるようにgetData()とsize()メソッドを定義できるかどうかです。私が手にエラーがある:スーパークラスでconstメソッドを使用するにはどうすればいいですか?
エラーC2662: 'いるIContainer ::のgetData': 'のconstいるIContainer' から 'いるIContainer &' から 'この' ポインタを変換することはできません
#include <functional>
#include <stdint.h>
class iContainer {
public:
virtual const int size() = 0;
virtual const uint8_t * getData() = 0;
void operator=(const iContainer &iC) { saveToEEPROM(iC.getData(), iC.size()); }
private:
void saveToEEPROM(uint8_t *pData, int size) {
// Save the data to EEPROM.
}
};
class Timer : public iContainer {
public:
Timer() {
pData.myData = 0;
};
Timer(uint8_t startHour) {
pData.myData = startHour;
}
virtual const int size() { return sizeof(pData); }
virtual const uint8_t *getData() { return (const uint8_t *)&pData; };
private:
struct {
uint8_t myData;
} pData;
}
/OT:ヒント: 'のstd :: function'は、(コンパイルと実行時の両方で)非常にパフォーマンスが重いです。絶対に必要でない限り使用しないでください(そうしないと)。 – Rakete1111
コンパイラを不満足にする完全なコンパイラのメッセージを正確に記述してください。コードスニペットには表示されません。 – SergeyA
@ Rakete1111、このコードの上に仮想関数より悪い(同じレベル)。 OPはパフォーマンスについて全く気にしていないようです。 – SergeyA