gpt4 book ai didi

c++ - 从派生类访问私有(private)成员

转载 作者:行者123 更新时间:2023-12-02 18:28:13 25 4
gpt4 key购买 nike

这可能是一个微不足道的问题。有以下代码,

class message {
public:
virtual void setMessage(const string& name, const int& age, const string& title) const;
virtual void getMessage(const string& name) const;
private:
void removeMessage(const string& name);
};

class test : public message {
public:
using message::removeMessage;
};


int main()
{
test t;
t.removeMessage("_");

while (1);
return 0;
}

尝试将 removeMessage() 作为测试类的公共(public)方法公开。但这是错误的,

错误 C2876:“消息”:并非所有重载都可访问

如何将基类中的私有(private)方法公开为派生类中的公共(public)方法?

最佳答案

你不能。 private 表示它只能在定义它的类中访问,子类不符合这个定义。你可能想要 protected关键字。

class message {
public:
virtual void setMessage(const string& name, const int& age, const string& title) const;
virtual void getMessage(const string& name) const;
protected: //use protected instead
void removeMessage(const string& name);
};

class test : public message {
public:
using message::removeMessage;
};


int main()
{
test t;
t.removeMessage("_");

while (1);
return 0;
}

Protected 可以概括为“私有(private)的,但也可以在基类中访问”。

关于c++ - 从派生类访问私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69812337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com