Вы объявили только статическую переменную num
. Вы должны определить это:
class Base
{
private:
static int num;
public:
friend void setvals(Base obj);
};
// This must be in a .cpp
int Base::num;
void setvals(Base obj)
{
obj.num=4;
}
Этот код работает.
Edit:
На самом деле вы можете реализовать функцию setvals()
следующим образом:
void setvals()
{
Base::num=4;
}
А на вашем Базовом классе:
friend void setvals();
Потому что num
является статическим.