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