Est-il possible que la fonction membre de la classe de base puisse accéder directement à la fonction de membre de la classe enfant?La fonction membre de la classe de base accède directement à la fonction membre de la classe enfant?
Je trouve le code de Androind, le BufferQueue hérite BnSurfaceTexture, et a une fonction membre "requestBuffer".
Dans la classe de base BnSurfaceTexture, j'ai trouvé qu'il suffit d'appeler requestBuffer directement.
Comment la classe de base BnSurfaceTexture connait-elle la fonction "requestBuffer"?
Merci
La fonction de membre de classe de base:
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);
La déclaration de classe enfant & mise en œuvre:
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;
}
Merci Kiril ~ c'est exactement ce que je veux savoir !! –