Figure 1: Partial listing of the example CmyString class

class ATL_NO_VTABLE CmyString : 
    public CComObjectRootEx<CComMultiThreadModel>,
    public CComCoClass<CmyString, &CLSID_myString>,
    public IDispatchImpl<ImyString, &IID_ImyString, 
        &LIBID_MYSTRINGOBJECTLib>
{
// ...
private:
    long m_counter;

public:
    STDMETHOD(capitalize)(/*[in,out]*/BSTR* str);
    STDMETHOD(get_counter)(/*[out, retval]*/ long *pVal);
};