一个类访问另一个类中成员的问题

luyinglply 2010-12-09 03:57:59
我自己创建的 A类 B类 B类想访问A类的CListctrl控件的成员变量m_list 我是这么做的 在A类的头文件中 CA * p;
在B类cpp中 定义A类对象 CA m_a;然后 m_a.p=&m_a;
m_a.p->m_list.insertitem(...); 运行的时候 错误 Debug Assertion Failed ! 重试 终止 忽略

A是formview B是dialog的

这是我自己写的 我是小菜鸟 这种思路不行的话 给出别的方法吧 详细点。多谢了
...全文
98 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
luyinglply 2010-12-10
  • 打赏
  • 举报
回复
谢谢大家了 我用yuenter说的 全局指针 解决了
LongLongAgoImBoy和sxqinge说的 我觉得也对 但是我没有弄成功 呵呵 分数有限 就分开给了 呵呵
sxqinge 2010-12-09
  • 打赏
  • 举报
回复
呵呵最好少使用全局变量或者全局函数,很容易引发数据混乱的
baby393 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yuenter 的回复:]
先定义一个全局的指针变量,类型为B类,这样:B *MEdialog;记住是要全局的。不然无效。
然后在B类的OnInitDialog中这样写:MEdialog=this;
然后在需要使用的源文件内先添上extern B *MEdialog;再包含B类的头文件,然后你就可以使用MEdialog->m_list来访问啦。。
[/Quote]

不要轻易教人用全局数据!教坏人!
Jimmy_Xia 2010-12-09
  • 打赏
  • 举报
回复
Class CA
{
public:
CListctrl m_list;
}
Class CB
{
public:
CListctrl *m_pAList;
}
CA myCA;
CB myCB;
myCB.m_pAList = &(myCA.m_list);
myCB.m_pAlist->InsertItem(...);
janyming 2010-12-09
  • 打赏
  • 举报
回复
帮顶,楼主还需多努力学习
yuenter 2010-12-09
  • 打赏
  • 举报
回复
先定义一个全局的指针变量,类型为B类,这样:B *MEdialog;记住是要全局的。不然无效。
然后在B类的OnInitDialog中这样写:MEdialog=this;
然后在需要使用的源文件内先添上extern B *MEdialog;再包含B类的头文件,然后你就可以使用MEdialog->m_list来访问啦。。
ouyh12345 2010-12-09
  • 打赏
  • 举报
回复
A类在创建时,把自己的指针交给B
sxqinge 2010-12-09
  • 打赏
  • 举报
回复
在B类的.h文件中:
class CA;
class CB()
{
private: //public也行
CA *p;
}
在B类的初始化中给*p进行初始化操作:p = new CA(m_hWnd);
然后再B类.cpp文件用到的地方就可以直接使用了
yihandrensunyong 2010-12-09
  • 打赏
  • 举报
回复
把那控件变量 搞成全局的 直接EXTERN 就行
Eleven 2010-12-09
  • 打赏
  • 举报
回复
你的A和B有什么关系?比如是在A中生成B的?父子关系。。。

16,472

社区成员

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

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

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