У меня есть Родительский Класс и Детский Класс.Родитель имеет защищенную функцию с именем setId (int id) .Теперь я хочу сделать функцию setId доступной для класса друга Child (назовем его Friend ).Возможно ли это, или мне нужно переопределить функцию setId внутри класса Child и использовать защищенную функцию setId родительского?
Я пробовал это с VS-Compiler, и это работает.
Я использую gcc и получаю «error: 'void Parent :: setId (int)' защищен»
Class Parent
class Parent
{
public:
Parent(){}
protected:
void setId(int id){m_id=i}
int m_id;
};
Class Child
#include "Parent.h"
class Child
: public Parent
{
friend class FriendClass;
public:
Child(){}
};
ClassДруг
#include "Child.h"
class FriendClass
{
public:
FriendClass(){
Child c;
c.setId(1);
}
};