ATL项目,头文件内的定义的变量,只能在源文件下有STDMETHODIMP开头定义的函数下用?

ddlik 2017-03-03 10:37:58
比如在iFoo add property PropertyA ,
Foo.h

class ATL_NO_VTABLE CFoo:
public CComObjectRootEx<CComSingleThreadModel>,
...
{
...
private:
short m_sPropertyA;
...
public:
STDMETHOD(get_PropertyA)(SHORT* pVal);
STDMETHOD(put_PropertyA)(SHORT newVal);
}


Foo.cpp

STDMETHODIMP CFoo::get_PropertyA(SHORT* pVal)
{
// TODO: Add your implementation code here
*pVal = m_sPropertyA;
return S_OK;
}


STDMETHODIMP CFoo::put_PropertyA(SHORT newVal)
{
// TODO: Add your implementation code here
m_sPropertyA = newVal;
return S_OK;
}

int FunA()
{
short s = m_sPropertyA; // error
}

//以上都可以正常使用 m_sPropertyA 这个变量
//但是自己在这个源文件定义一个新的函数,就不能使用这个内部变量了,应该怎么办呢?



...全文
121 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddlik 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 hdt 的回复:
int FunA() { short s = m_sPropertyA; // error } 你这个是全局函数当然不能使用类内部的成员 类成员函数要用 int CFoo::FunA() { } 并且在类中还要声明如下 class ATL_NO_VTABLE CFoo: public CComObjectRootEx<CComSingleThreadModel>, ... { ... private: short m_sPropertyA; ... public: STDMETHOD(get_PropertyA)(SHORT* pVal); STDMETHOD(put_PropertyA)(SHORT newVal); int FuncA(); }
明白了,多谢指教。
真相重于对错 2017-03-04
  • 打赏
  • 举报
回复
int FunA() { short s = m_sPropertyA; // error } 你这个是全局函数当然不能使用类内部的成员 类成员函数要用 int CFoo::FunA() { } 并且在类中还要声明如下 class ATL_NO_VTABLE CFoo: public CComObjectRootEx<CComSingleThreadModel>, ... { ... private: short m_sPropertyA; ... public: STDMETHOD(get_PropertyA)(SHORT* pVal); STDMETHOD(put_PropertyA)(SHORT newVal); int FuncA(); }

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧