Well if you want to write a COM component that you can access
from non C++ clients then all you need to do is to implement IUnknown
and IDispatch and write a few support functions which will register
your component in registry. Non of these tasks are impossible in C++,
but doing it all by yourself would require you to have a reasonable
understanding of COM.
Also, I don’t see why a person who already has access to something like a
C# compiler (and in most likelihood VS .NET IDE as well) would not make use
of tools like VC++ or VC++.NET.
If you are going for either versions of VC++ you have a very neat option
of creating COM objects with either ATL or MFC. Both ways are reasonably
easy unless you are doing something unheard of.
This cool article will give you enough knowledge on COM programming
and developing a simple COM object using ATL in VC++.