基類成員函數可以直接訪問子類成員函數嗎?基類成員函數直接訪問子類成員函數?
我找到的代碼從Androind,所述BufferQueue繼承BnSurfaceTexture,並且具有一個成員函數 「requestBuffer」。
在基類BnSurfaceTexture,我發現它只是直接調用requestBuffer。
基類BnSurfaceTexture如何知道函數「requestBuffer」?
感謝
基類成員函數:
status_t BnSurfaceTexture::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case REQUEST_BUFFER: {
CHECK_INTERFACE(ISurfaceTexture, data, reply);
int bufferIdx = data.readInt32();
sp<GraphicBuffer> buffer;
/* it call requestBuffer directly */ <--------
int result = requestBuffer(bufferIdx, &buffer);
reply->writeInt32(buffer != 0);
子類聲明&實現:
class BufferQueue : public BnSurfaceTexture {
private:
virtual status_t requestBuffer(int slot, sp<GraphicBuffer>* buf);
status_t BufferQueue::requestBuffer(int slot, sp<GraphicBuffer>* buf) {
ATRACE_CALL();
ST_LOGV("requestBuffer: slot=%d", slot);
Mutex::Autolock lock(mMutex);
...
return NO_ERROR;
}
謝謝Kiril〜這正是我想知道的! –