Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 要从CCommand访问器获取对象的指针/引用吗 c命令和详细信息; rsDetails.m_IdxPrj=pDoc->m_dbId; if(rsDetails.Open(会话)=S_确定) { rsDetails.ClearRecord(); if(rsDetails.MoveNext()==S_确定) { CMyClassBase*数据=? } }_C++_Visual Studio 2010_Mfc - Fatal编程技术网

C++ 要从CCommand访问器获取对象的指针/引用吗 c命令和详细信息; rsDetails.m_IdxPrj=pDoc->m_dbId; if(rsDetails.Open(会话)=S_确定) { rsDetails.ClearRecord(); if(rsDetails.MoveNext()==S_确定) { CMyClassBase*数据=? } }

C++ 要从CCommand访问器获取对象的指针/引用吗 c命令和详细信息; rsDetails.m_IdxPrj=pDoc->m_dbId; if(rsDetails.Open(会话)=S_确定) { rsDetails.ClearRecord(); if(rsDetails.MoveNext()==S_确定) { CMyClassBase*数据=? } },c++,visual-studio-2010,mfc,C++,Visual Studio 2010,Mfc,我有一些类似于上面代码的东西,其中我使用CCommand CAccessor获得了大量数据。我有一个处理参数映射和列映射等的类,还有一个包含变量的父/基类 我不太流利的C++,所以如果我丢失了一些被看作是“显而易见”的东西,那么道歉,但是我无法弄清楚如何获得一个指针/引用MyC类或MyClassBase,以便将它传递给一个函数进行进一步的处理。 任何帮助都将不胜感激。CMyClassBase*details=dynamic_cast(rsDetails.m_pAccessor); CCo

我有一些类似于上面代码的东西,其中我使用CCommand CAccessor获得了大量数据。我有一个处理参数映射和列映射等的类,还有一个包含变量的父/基类

<>我不太流利的C++,所以如果我丢失了一些被看作是“显而易见”的东西,那么道歉,但是我无法弄清楚如何获得一个指针/引用MyC类或MyClassBase,以便将它传递给一个函数进行进一步的处理。 任何帮助都将不胜感激。

CMyClassBase*details=dynamic_cast(rsDetails.m_pAccessor);
    CCommand<CAccessor<CMyClass> > rsDetails;
    rsDetails.m_IdxPrj = pDoc->m_dbId;
    if (rsDetails.Open(session) == S_OK)
    {
        rsDetails.ClearRecord();
        if (rsDetails.MoveNext() == S_OK)
        {
            CMyClassBase* data = ?
        }
    }
很明显,对不起!
…虽然如果这不是一个好的解决方案,或者如果有更好的解决方案,请告诉我。

使用C样式转换后再使用
动态\u转换的基本原理是什么?C风格的演员阵容将被打破,
dynamic_cast
正试图保护你不受此影响。请记住,如果您不知道代码为什么工作,它就不会工作。正如我所看到的,m_pAccessor是CMyClass,我只需要将其标识为CMyClass……动态是向上转换到父类。我哪里误解了这一点?…好吧,现在我明白了,我可以删除C样式转换,并将访问器直接动态转换到底部。我不想假设我可以走捷径,也不知道动态演员是否足够聪明。感谢您指出这一点。您可以立即将指向派生类的指针指定给指向基类的指针,而无需任何强制转换
dynamic_cast
用于向下转换,即将指向基类的指针转换为指向更派生类的指针。(每次出现“指针”都可以替换为“指针或引用”。)
CMyClassBase* details = dynamic_cast<CMyClassBase*>(rsDetails.m_pAccessor);