class Temp
{
private:
~Temp() {}
friend class Final;
};
class Final : virtual public Temp
{
public:
void fun()
{
cout<<\"In base\";
I have modified the original code posted and verified this code in g++:
class Temp
{
private:
Temp() {
cout << "In Temp Class ctor" << endl;
}
~Temp() {}
friend class Final;
};
class Final : virtual public Temp
{
public:
void fun()
{
cout<<"In base";
}
};
class Derived : public Final
{
};
int main()
{
Derived obj;
obj.fun();
return 0;
}
Result: $g++ one.cpp -o one -lm -pthread -lgmpxx -kgmp -lreadline 2>&1
one.cpp: In constructor 'Derived::Derived()': one.cpp:8:9: error: 'Temp::Temp()' is private Temp() {
one.cpp:25:11: error: within this context class Derived: public Final
one.cpp:11:9: error: 'Temp::~Temp()' is private ~Temp() {}
one.cpp:25:11: error: within this context class Derived : public Final
one.cpp:11:9: error: 'Temp::~Temp()' is private ~Temp() {}
Note: It's a best practice not use void with 'main'.
Thanks,