我想创建一个仅阻止父类中的一个函数的类。
例如:

class basememory{
    char *mem;
protected:
    basememory(int size){mem=new char[size];}
public:
    char read(int i){return mem[i];}
    void write(int i, char a){mem[i]=a;}
};

class rom: public basememory{
public:
    rom(int size, char *ch, int arr): basememory(size){
        for(int i=0;i<arr;i++){
            write(i, ch[i]);
        }
    } //burned to rom
};
class ram: public basememory{
public:
    ram(int size): basememory(size){}

};


我不希望只为rom类从外部访问write()函数。
有没有一种方法可以在不更改基本内存类的情况下进行此操作?

最佳答案

您可以使用protectedprivate继承,然后公开要公开的功能:

class rom: protected basememory
{
public:
    rom(int size, char *ch, int arr): basememory(size){ ..... }

    using basememory::read;
 // ^^^^^^^^^^^^^^^^^^^^^^
};


请注意,这意味着您不能通过引用/指针将rom传递给期望basememory的函数-因为basememory具有write是公共的,所以如果有可能将rom转换为引用它将绕过basememory的访问说明符。

关于c++ - 只能从继承的类中阻止一个函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30586056/

10-11 04:23