I don't think it's possible to write a single structure to represent all polytopes (because of how the half-spaces are calculated) but it is possible to write polymorphic code!

For example, to make a tetrahedron :

Code:

struct vertex {
double x, y, z;
};
struct tetra {
array<struct vertex, 4> p;
array<double, 4> a, b, c, d;
};

Here each index of a, b, c and represent the plane of each face taken from the equation ax + by + cz - d = constant and p is storage of 4 vertices of the tetrahedron.

You can easily create a base polymorphic polytope class which stores all the functions you'll need (calculating half-spaces and if you want, point location routines) and from there, you can use derived classes to implement each specific polytope you want to model.

It's because some polytopes have faces made out of more than 3 points or some get really funky so you need specific classes for each case, I think.