As discussed, the literal way to represent java-objects in C++ is by using pointers to class objects.
Using C++ pointers with the new statement has the disadvantage, that the slower heap has to be accessed, and that deleting the object has to be done manually.
Depending on the scope, there are more C/C++ like solutions.
At global or namespace-scope, you can use the extern-specifier to declare an object, defined elsewhere:
extern C c;
<more code>
c(1,2,3);
(The extern keyword tends to be used rarely within C++).
As usual, boost offers an elegant and general solution with the library boost::optional.
This can be used everwhere as follows:
optional<int> oa; // declaration
<more code>
*oa=3; // construction