我自定义一个类:
class database
{
public:
 _CatalogPtr m_pC;
CString csSQL;
}
将其作为应用程序类的一个成员
class CsysApp
{
public:
database db;
}
然后在另一个对话框类中调用database中的成员时,总是不行,请问是哪里错了?
class Cdl : public CDialog//对话框类
{
public:
afx_msg void OnBnClickedOk();
}
afx_msg void OnBnClickedOk()
{
 CsyApp::db.csSQL       //这里调用总是失败!
}
那位大大给指点一下呀,谢谢!

解决方案 »

  1.   

    要这样调用,除非你把db 定义成static 成员
    class CsysApp
    {
    public:
    static database db;

    注意要在CsysApp.cpp文件中加定义
    CsysApp::database db;
      

  2.   

    database db;
    既然定义了db,那么先初始化,然后获取CsysApp , AfxGetApp()->db.csSQL等方式来访问
      

  3.   

    感谢bottlebox 大大的回答!
    我一会试一下大大的方法!
    我用实例调用也不行呀,就像这样:
    CsysApp theApp;
    在对话框类中
    afx_msg void OnBnClickedOk() 

    theApp.db.csSQL      //这样也是失败的
    }
      

  4.   

    ((CTestMysqlApp*)AfxGetApp())->db.csSQL();
      

  5.   

    更正上面
    ((CsysApp*)AfxGetApp())->db.csSQL();
      

  6.   

    还有个奇怪的地方,在打出theApp.db.csSQL 中db后面的.时,vs2008的自动完成列表中竟然只有函数,没有数据变量成员!
    这个又是怎么回事呢?
      

  7.   

    两位大大的方法都试过了,还是不行,不能识别database中的数据成员!
      

  8.   

    难道在内嵌类中都不能定义数据成员吗?
    我定义的好多数据成员,一个都不识别!
    尤其是_CatalogPtr这样的ADOX对象,都不识别(就是在vs2008的完成列表中不出现,使用的时候这些对象的函数全部不可用)
    请问这样的情况该如何处理?
    或者是我哪里定义错误了!
    谢谢
      

  9.   

    class database
    {
    public:
    ADOX::_CatalogPtr  m_pCatalog;
    _ConnectionPtr     m_pConnection;
    _CommandPtr        m_pCommand;
    _RecordsetPtr      m_pRecordset;
    CString            csSQL;
    _bstr_t            bsSQL; CString strFileName;
    CString strDatFile;
    CString strEnCode;
    void CreateData();                  //创建数据库
    database();
    ~database();
    };
    这个就是我的作为内嵌类的类,大大们帮忙看看那里出错了,谢谢!