CMapStringToOb赋值失败,很诡异,麻烦帮忙看看

djhell 2010-08-03 08:40:03
CMapStringToOb aMap;
CMapStringToOb bMap;
for(int k=0;k<3;k++)
{
ClassA a;//继承自CObject
a.Setname(L"Mr Wang");
aMap.SetAt(myname,(CObject*&)a);
}
bMap.SetAt("id0220",(CObject*&)aMap);//设置完毕
CMapStringToOb cMap;
ClassA b;
if (bMap.Lookup(_T("id0220"), (CObject*&)cMap)==TRUE)
{//能跑到但取到cmap无值
if(cMap.Lookup(CString(L"Mr Wang"), (CObject*&)b)==TRUE)
{//跑不到
AfxMessageBox(b.Getname());
}
} }
...全文
184 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
djhell 2010-08-08
  • 打赏
  • 举报
回复
我把aMap换成指针了,结果正确,确实是不能传Object只能传指针
if (pbMap->Lookup(_T("id0220"), (CObject*&)pcMap)==TRUE)

结贴
不说害怕 2010-08-04
  • 打赏
  • 举报
回复
另外这是MSDN里的例子.

// example for CMapStringToOb::LookUp

CMapStringToOb map;
CAge* pa;

map.SetAt( "Bart", new CAge( 13 ) );
map.SetAt( "Lisa", new CAge( 11 ) );
map.SetAt( "Homer", new CAge( 36 ) );
map.SetAt( "Marge", new CAge( 35 ) );
ASSERT( map.Lookup( "Lisa", ( CObject*& ) pa ) ); // Is "Lisa" in the map? =>这句居然是( CObject*& )
ASSERT( *pa == CAge( 11 ) ); // Is she 11?

不说害怕 2010-08-04
  • 打赏
  • 举报
回复
L"
SetAt("
_T(
.Lookup(_T ... cMap 这里居然还是CMapStringToOb

字符串乱用.
ClassA* b; // 函数参数乱用. 让你传入一个指针,函数内部是引用方式来修改这个指针.
if(cMap.Lookup(L"Mr Wang", (CObject*)b)==TRUE)
这样试试看.
xxd_qd 2010-08-03
  • 打赏
  • 举报
回复
LZ果然强悍!能把CObject&强制转换成CObject*&!

CMapStringToOb里面存储的不是CObject,而是CObject的指针!你的所有SetAt、Lookup之类的函数,需要的传入参数都是CObject*,而不是CObject本身。如果你的参数传递正确的话,是不需要使用任何强制转换的,一旦你发现不用强制转换就编译不通过,那就是你写的不对。
dvlinker 2010-08-03
  • 打赏
  • 举报
回复
乖乖,LZ的头像真吓人啊,帮忙顶一个了~
djhell 2010-08-03
  • 打赏
  • 举报
回复
程序编译执行没有问题,就是为什么bMap.Lookup没查到呢
源码链接: https://pan.quark.cn/s/a4b39357ea24 ### Ubuntu 用户磁盘空间分配与 Linux 硬盘分区方案深入剖析 #### 标题与描述中的核心知识要点说明 本文件将系统性地阐释在 Ubuntu 操作系统中如何为用户科学地分配磁盘空间,并深入分析适用于 Linux 的硬盘分区策略。文件不仅会介绍基础的目录结构及其功能,还会提供具体的分区指导以及在实际操作过程中需要留意的事项。 #### 目录结构及其功能说明 - **/bin**:系统常用基础命令的存储位置。 - **/boot**:包含启动时所需文件,例如内核镜像和初始化脚本等。 - **/dev**:存放设备文件。 - **/etc**:存储系统配置信息。 - **/home**:用户个人目录,每个用户拥有独立的子目录。 - **/lib**:存放运行二进制文件所需的共享库。 - **/mnt**:用于临时挂载其他文件系统的目录,可用于挂载软盘或 CD-ROM 设备。 - **/proc**:虚拟文件系统目录,存储当前运行内核的相关信息。 - **/root**:超级用户(root)的主目录。 - **/sbin**:系统管理程序的存放位置。 - **/tmp**:临时文件存储的目录。 - **/usr**:存放只读数据,包括应用程序的可执行文件和文档等。 - **/var**:存储可变数据文件,例如日志文件和邮件队列等。 - **/X11R6**:X Window 系统的安装路径。 #### 硬盘分区策略分析 文件中强调,在 Linux 环境下进行硬盘分区时需要综合考量多个因素,以确保系统的稳定运行和性能表现。以下是一些关键的分区建议: 1. **/boot ...
代码转载自:https://pan.quark.cn/s/4f1937b2c732 Quartus Prime是由Altera公司(现已被Intel公司所收购)研发的一款集成化电子设计自动化软件,其主要应用领域在于Field-Programmable Gate Array(现场可编程门阵列)以及Complex Programmable Logic Device(复杂可编程逻辑器件)的设计、仿真、综合、布局布线以及编程等任务。在本案例中,所提及的为Quartus Prime 17.1版本的安装程序,该程序内含器件库文件及其他相关组件,适用于Windows 10 64位操作系统环境,并且已有相关测试验证其可用性。 **1. Quartus Prime概述** Quartus Prime是Altera/Intel公司FPGA设计流程的核心工具,它提供了一个集成化的开发平台,支持从设计概念到硬件实现的完整过程。该软件不仅涵盖了逻辑综合、时序分析、仿真、物理设计等基础功能,还包含了高速接口IP核、嵌入式处理器系统、内存资源管理等多种高级特性。 **2. Quartus Prime 17.1版本的新增功能** - QSYS系统构建工具的优化:17.1版本可能对QSYS系统进行了升级,使得系统集成更为便捷,支持更多的外部设备和处理器模型。 - 性能提升:可能增强了综合和布局布线的效率,降低了设计的功耗和面积。 - 新器件支持:可能会增加对最新发布的Altera FPGA和CPLD产品的支持,如Arria 10、Cyclone 10等系列产品。 - 调试功能的改进:可能强化了硬件调试工具,如JTAG调试和软件调试器的性能。 **3. 器件库文件** 器件库文件是Quartu...

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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