![](/img/trans.png)
[英]C++ : Accessing private member of base or global variable from a derived class
[英]Accessing private member from derived class
這可能是一個微不足道的問題。 有下面的代碼,
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 () 作為測試類中的公共方法公開。 但這是錯誤的,
錯誤 C2876:“消息”:並非所有重載都可以訪問
如何將基類中的私有方法公開為派生類中的公共方法?
派生類永遠不能訪問私有成員。 如果您的意圖是讓派生類訪問基類的成員,則將這些成員設為 protected 或 public。
你不能。 私有意味着它只能在定義它的類中訪問,子類不符合此定義。 您可能需要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 可以概括為“私有的,但也可以在基類中訪問”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.