class ATL_NO_VTABLE CMyFirstCOM :
public CComObjectRootEx<CComSingleThreadModel>
, public CComCoClass<CMyFirstCOM, &CLSID_MyFirstCOM>
, public IDispatchImpl<IMyFirstCOM, &IID_IMyFirstCOM, &LIBID_myFirstCOMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
explicit CMyFirstCOM(int val);
~CMyFirstCOM();
....
};编译后报如下错误:加上一个CMyFirstCOM(); 编译就通过了。请问是什么原因?
public CComObjectRootEx<CComSingleThreadModel>
, public CComCoClass<CMyFirstCOM, &CLSID_MyFirstCOM>
, public IDispatchImpl<IMyFirstCOM, &IID_IMyFirstCOM, &LIBID_myFirstCOMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
explicit CMyFirstCOM(int val);
~CMyFirstCOM();
....
};编译后报如下错误:加上一个CMyFirstCOM(); 编译就通过了。请问是什么原因?
解决方案 »
- HTTP/1.1 302 moved Temporarily
- 初学MFC 填充静态文本问题
- 请问怎么更改ToolBar的按钮上面的icon图标,使图标背景色与应用框架相同阿?
- VC操作Oracle的问题,能成功连接,可当_RecordsetPtr的m_pRecordset的Open方法时总出错,具体程序请进来看,在线等,急急急!!!!!
- CComObjectCached,CComObjectNoLock.....等类有什么作用?
- 关于在局域网中监听数据报文的问题
- VC新手:怎样在第二次调用对话框时使下拉框只可读?在线等待!
- 請問有沒有線程的Hook?
- 谁有BoundsChecker?要有注册码的,给小弟发一个,一定给分.
- VC中MoveFileEx在2000中的一此问题
- 继承dlg的窗体,无法捕获右键单击事件,深夜求救
- 当给按钮关联一个变量后,怎样给它加载图片?
---- 加了明确构造函数
不加“explicit”关键字也一样的。后面加上默认构造函数时,这个关键字是去掉了的。
类厂?oh, my god! 有没有可能绕开这个机制?
创建的时候是使用 STDAPI CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID * ppv
);
创建的,并没有给你传参数的地方.
2、类厂创建组件时也是无法传递参数的,必须提供默认无参构造函数
3、如果需要初始化组件,有许多机制:
A. 组件成员变量提供默认值(这是C++的机制)
B. 组件实现持久化接口,由客户端调用这些接口来初始化数据,可以从结构化存储、网络、文件、内存中加载数据
C. 组件实现属性包接口,客户端一次性提供所有属性数据供初始化
D. 组件实现属性或方法,客户端调用它们初始化
E. 避开类厂机制,由自己创建组件,想怎么初始化都行,带参数构造函数也可以,不过风险很大