OK使用const的方法,我會嘗試這一個更多的時間。我不是一個有經驗的C++程序員,所以我只需要一些幫助。這是一些非常簡單的代碼,不會編譯。我想知道的是,是否可以定義getData()和size()方法,以便代碼能夠被編譯?我得到的錯誤是:我怎麼在超
錯誤C2662:「的IContainer ::的getData」:不能從「常量的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