If she floats then she is not a witch like we thought
There are several small things that you can improve:


double weight = 0; works fine, but double weight = 0.0; would be more pedantic since weight is a double.
By the way, the following line is a good example to illustrate the benefits of literals pedantry:

double volume = ((4/3) * M_PI * pow(obj.radius, 3));


Here, 4/3 performs an integer division and not a floating point one; that expression will yield 1 instead of 1.333333333 (I doubt that you want it to yield 1). You should change it to 4.0/3.0 to get the desired result.
That said, there is another problem with the aforementioned line: M_PI is not standard C++. It is not standard C either. It is a standard POSIX addition to &lt;math.h&gt;. You should rewrite your own constants or use Boost ones for examples if you want your code to be portable.
Speaking of &lt;math.h&gt;... You are using C++, therefore you should use the C++ standard library headers too and not the C ones:

#include &lt;cmath&gt;

And you notably forgot to include the header &lt;ctype.h&gt; for std::tolower.
That said, it is good practice in C++ to fully qualify the names of the functions from the standard library: you should write std::tolower (and thus actually include &lt;cctype&gt; instead  of &lt;ctype.h&gt;). It's not really longer and it may help to prevent name clashes (I doubt that you will have problems with tolower, but it can be worse with some more common names).