That sounds quite doable. I would suggest putting the C++ code into its own DLL.
In any case, to call C++ from some other language is generally not much different from calling Pascal from some other language. In both cases, you need to "tear down" (flatten) the C++ (or Pascal) classes into exported C compatible functions.
You can also then "build up" classes on the calling side that wrap (and hide) the library functions. This allows you to work with classes that are similar to what you have on the library side. See the referenced dynamic library articles above. The code in the library is a Pascal class, "flattened" to a series of C-like functions. The calling code is a Python wrapper class, C# wrapper class, etc. as needed that calls the library functions.
Note that to keep track of instantiated C++ objects, you'll probably need to pass them to and from library as pointers. This is generally safe as long as you don't do anything else with them on the calling (Pascal) side.
-Phil