请求非类类型的成员 void*

问题描述 投票:0回答:1

我正在尝试做一个指向通用对象类型的指针,但我不知道如何访问任意对象方法。

我尝试定义一个接口

class InterfaceProtocol{
    public:
    virtual void accessBlock(unsigned long int address, unsigned long int size, bool read) = 0;
};

我在另一个类中继承的

class SACache : public InterfaceProtocol{
    void* next
    virtual void accessBlock(unsigned long int address, unsigned long int size, bool read);
}

在某个时刻,我希望最后一个类使用从 InterfaceProtocol 继承的 accessBlock 函数访问通用对象

void SACache::accessBlock(unsigned long int address, unsigned long int size, bool read){
   next.accessBlock(blockAddress,blockSize,YES);
}

我在面向对象方面确实很新,但就我而言,这里不需要模板,主要是因为我可以保证通用对象也将继承 InterfaceProtocol 方法。

c++ object inheritance interface
1个回答
0
投票

next
是一个
void*
,这意味着它绝对是指向任何东西的指针,就像
int
一样。如果您希望它始终指向
InterfaceProtocol
,请写
InterfaceProtocol* next;

并且,

next
是一个指针。它所指向的东西是
*next
。如果你想调用它所指向的函数,请写
(*next).accessBlock
或简称
next->accessBlock

© www.soinside.com 2019 - 2024. All rights reserved.