vtable is always "hidden". It's only there when there is at least one virtual member defined. Sole difference between class and struct in C++ is default visibility.
class A {
int a; // private
}
struct A {
int a; // public
}