|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ c++的问题,求大神指导!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
652
人关注过本帖
标题:
c++的问题,求大神指导!
只看楼主
加入收藏
hjy88168
等 级:
禁止访问
帖 子:37
专家分:13
注 册:2011-10-13
结帖率:
53.85%
楼主
收藏
已结贴
√
问题点数:10 回复次数:4
c++的问题,求大神指导!
是这样,我想通过共享内存开辟一块空间用来建造一个List的容器,用MapViewOfFile后,返回的就是这片空间的指针,然后我转换成List(struct) *类型
问题出来了,我用List(struct) *类型的指针->没有begin(),end()等的方法,只有struct结构下的成员,求大神指导这种情况怎么处理?
搜索更多相关主题的帖子:
空间
2013-02-16 18:10
举报帖子
使用道具
赠送鲜花
maoguoqing
来 自:重庆
等 级:
贵宾
威 望:
28
帖 子:2980
专家分:19
注 册:2005-12-5
第
2
楼
收藏
得分:5
你虽然获得的一个合法空间的指针,但是你没在这片空间上调用构造函数,自然没有这个class/struct的成员了 特别是虚函数表指针这些都没有
要达到你的目的 可以使用placement new 的形式 :
new (存在的空间指针)
List
天行健,君子以自强不息!!QQ:68660681
2013-02-16 20:49
举报帖子
使用道具
赠送鲜花
hahayezhe
来 自:湖南张家界
等 级:
贵宾
威 望:
24
帖 子:1386
专家分:6999
注 册:2010-3-8
第
3
楼
收藏
得分:5
数据按规律排列,然后根据指针重新构建对象
2013-02-17 11:17
举报帖子
使用道具
赠送鲜花
hjy88168
等 级:
禁止访问
帖 子:37
专家分:13
注 册:2011-10-13
第
4
楼
收藏
得分:0
回复 2楼 maoguoqing
是我描述的不够详细,我自定义了一个struct的类型的结构假设是A,我用MapViewOfFile返回申请的这块内存空间的首地址后强转为list<A> *的类型,本意是想把这块内存当成一个List 链表使用,本应该是List容器的指针,但是发现这个指针->后,下面只有A下面我自己定义的成员,而没有list的方法,比如begin(),end()等等,不知道为什么会出现这种状况?
另外,刚才您讲的MapViewOfFile返回的空间并没有调用构造函数,说到这里我似乎理解到了点编程的真谛,请您能否在这里多阐述阐述,说的仔细些~~
我一直以为包括MapViewOfFile,malloc,new什么的,申请开辟空间都,都是未初始化的,通过强转成某一个类型的指针后,这块内存就被分割成对用的结构,存放和读取数据的时候,也按照这个结构里的成员来进行,比如前四个字节放Int,第五个字节放char等等,但这些数据都是放在堆区,跟我们所定义一个对象放在栈区的东西不一样,这里我只知道这样定义的话会调用构造函数,而堆区的东西不调用构造函数,仅仅通过强转成某一类型的指针达不到目的。
不知道我的理解有什么误区,还请您多点拨一二~~谢谢
2013-02-18 17:14
举报帖子
使用道具
赠送鲜花
maoguoqing
来 自:重庆
等 级:
贵宾
威 望:
28
帖 子:2980
专家分:19
注 册:2005-12-5
第
5
楼
收藏
得分:0
你说的->后只有A的成员只是你编译器的提示把,你非要用list的方法编译是能过得,只是运行出错
只有用new申请的空间才会为你调用构造函数,malloc等只是为你分配指定大小空间不会为你初始化
如果只是一个单纯的结构体,通过malloc分配空间后强制转化指针,然后自己赋值初始化也是可以的
但是大部分的类都是不可以的,特别是有虚函数的类,要明白编译器在构造函数中作了些什么事情,构造函数才是把空间初始化成指定对象,强制转化不会对内存产生任何的改变.
天行健,君子以自强不息!!QQ:68660681
2013-02-18 23:20
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
c++的问题,求大神指导!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.025753 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved