Myabe what you want is to create not an abstract class, but a class with a private constructor (like a singleton)?
class A
{
private:
A()
{
}
virtual void __Fun()
{
std::cout << "Abstract Class";
}
static void _Fun(A &instance)
{
instance.__Fun();
}
public:
static void Fun()
{
A a;
_Fun(a);
}
};
int main()
{
A a; // Throws - which is good: constructor is private
A::Fun(); // Desired result
}
But then, I'm not sure why do you need such a thing at all, and why do you need virtual functions in it?